| |
Предположим есть 9 клипов внутри которых разные только одна картинка и одна надпись, я заготовил пустышку (шаблон) для этих клипов, как можно программно менять эту картинку и надпись не дублируя сам клип, т.е. грубо говоря мне нужно заменить например клип sprite1 на sprite2
Зарание спасибо. |
|
|
|
Привет.
Я тут набросал урок с исходником, посмотрите его, возможно вам станет понятнее, как работает принцип «прототипирования».
Посмотреть флешку Скачать исходник
Ниже я приведу код флешки и постараюсь чуть-чуть объяснить, как же она работает. Хочу сразу сказать, что, в принципе, всё решение задачи вы описали сами. Нужно будет просто внутрь «главного контейнера» подгружать другие клипы и заменять текст в текстовом поле на нужный.
Код
Stage.align = "TL"; Stage.scaleMode = "noScale"; //Переменная, в которой мы будем запоминать сколько клипов было уже добавлено var _count:Number = 0; //Создаём функцию, которая будет добавлять новые клипы function add_func(){ _root._count++; // var _mc:MovieClip = _root.attachMovie("cont_mc","cont"+_root._count+"_mc",_root.getNextHighestDepth(),{_x:random(300), _y:random(300), _alpha: 90}); //Изменяем текст в текстовом поле _mc.text_txt.text = "Текст клипа №"+_root._count; //Подключаем внутрь контейнера другой клип _mc.insideCont_mc.attachMovie("clip1_mc", "clip_mc", _root.getNextHighestDepth()); //Изменяем текст внутри подгруженного клипа _mc.insideCont_mc.clip_mc.text_txt.text = _root._count+" клип"; //Делаем так, чтобы кнопка add_mc была всегда на верху _root.add_mc.swapDepths(_root.getNextHighestDepth()); } //Отслеживаем событие клика по кнопку «Добавить ешё один клип». При нажатии на эту //кнопку будет срабатывать функция add_func add_mc.onRelease = function(){ _root.add_func(); } //Добавляем первый клип add_func();А вот так вот у меня выглядит вкладка Library (чтобы вы лучше представляли, сколько клипов и с какими именами должно быть):
О спасибо огромнее, вот тогда в догонку ещё 1 вопрос
представим что мы сделали клип в котором в свою очередь достаточно сложные движения с другими клипами.
Задача дублировать клип таким образом чтобы внутренние клипы тоже дублировались, я не особо силён ещё во флэш, мне приходилось делать это вручную и swap клипов в каждом ключевом кадре :(
простой пример необходимо сделать 9 таких клипов с разной картинкой надписью и ссылкой (малыми жертвами) =)
Зарание спасибо
исходник
Ещё можно пару вопросов?
1. Как в Movie Explorer поменять порядок клипов
2. Как поменять у клипа точку отсчета координат, если при создании указал не ту которую хотел
Я посмотрел ваш исходник, внёс некоторые изменения, теперь там построена работа на классах. Я надеюсь вам будет понятно что я там сделал и как, если нет, то задавайте свои вопросы тут. Сам исходник можно скачать тут: http://www.flashist.ru/files/help/prototype_of_many_clips/prototype_of_many_clips_other_source.rar
Что касается вопросов:
1) Я не очень понимаю, на счёт какого «Movie Explorer» идёт речь, но если вам нужно поменять значение глубины для клипа, то вам нужно будет сделать следующее:
_mc.swapDepth(_number);Где вместо _mc — имя клипа, а вмест _number — номер новой глубины, на которую будет помещён клип. Чем больше значение глубины, тем выше клип будет находиться визуально.
2) Поменять точку координат программно нельзя, но можно создать пустой клип-контейнер, внутрь которого подгружать нужный другой клип. Тогда, обращаясь к свойствам _width и _height клипа можно будет размещать его в нужной точке. Например если мы напишем:
Где вместо _mc у нас будет клип, который нужно будет отцентрировать внутри другого клипа, то клип встанет в центр клипа-контейнера.
ссылка битая
Сорри, поправил.