|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2009
Сообщений: 65
|
как достучаться до child'ов Мувика, которые находятся не в первом фрейме таймлайна
Есть такая проблема : у меня есть мувиклип "main" который загружается на сцену. Этот мувиклип состоит из 3-х кадров, в которых также находятся дочерние мувиклипы . Так вот достучаться я могу только до того дочернего мувиклипа, который находится в первом кадре (и естественно до его чайлдов, если такие имеются). Как мне достучаться до дочернего мувиклипа , который находится например в третьем кадре основного мувика? Когда я пытаюсь это сделать , то ловлю эксепшн (типо пытаюсь обратиться к null object).
Исходник с тестом прилагается: Я с флешем не очень знаком (работаю с Флексом), подскажите пожалуйста как я могу зафиксать эту проблемку ... Заранее Благодарю. |
|
|||||
могу только предложить посмотреть как и что
private function onClickBtn3(event:MouseEvent):void { main.gotoAndStop("anim3"); addEventListener(Event.ENTER_FRAME, delayedAction); } private function delayedAction(evnt:Event):void { trace( "main.obj_3_frame : " + main.obj_3_frame ); if (main.obj_3_frame) { removeEventListener(Event.ENTER_FRAME, delayedAction); main.obj_3_frame.rotateObj.rotation = main.obj_3_frame.rotateObj.rotation + 30; } } |
|
|||||
Регистрация: Mar 2009
Сообщений: 65
|
Аж стыдно что сам не догадался поставить задержку, конечно костыль, но думаю пойдёт . silin огромное спасибо!
Дело в том, что я должен вызывать различную анимацию(смех, прыжки, бег и т.д.) загружаемых во Флекс аваторов (персонажей, которые сделана на Флеше). И заказчик просит , чтобы они были как можно проще реализованы, чтобы аниматор мог потом по моему примеру создавать других аваторов. Я видел как работает этот "аниматор", он реально знаком с Флешем на уровне создать шарик и переместить его на таймлайне с помощью Create Motion Tween в лучшем случае, большинство анимации тупо нарисовано в кадрах, а про знании хотя бы о существовании AS я вообще молчу. Так вот мой вариант реализации аватара им вроде понравился и понятен. Я с флешем знаком не очень хорошо, поэтому не знаю как лучше организовать смену анимации , вот и выбрал движение по кадрам. Я так понимаю, что правильней было бы разбить анимацию на отдельные мувики и грузить их по мере необходимости на сцену , а предыдущих удалять? Если не сложно , не могли бы вы посоветовать как было бы правильней организовать мувики в моем случае, ну или дать линку на похожий пост ? Спасибо. Последний раз редактировалось Gogan; 19.03.2009 в 12:44. |
|
|||||
Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
|
если уж существует такая необходимость, то можно поступить так:
оно будет срабатывать каждый раз, когда произошло изменение кадра и содержимое добавлено. Только в самом обработчике нужно будет анализировать e.target на предмет того, что добавлено, т.к. обработчик будет срабатывать на все элементы: на клипы, кнопки, графику и т.д. Еще вариант, в нужном кадре делать dispatchEvent своего события, например AVATAR_ADDED, в классе подписаться на это событие и определить функцию, которая будет работать с этим клипом так, как будто клип находится в первом кадре. Но заставить с этим вариантом работать дизайнера - задача куда более сложная |
|
|||||
[+4 14.03.09]
|
Цитата:
Вот, не поленился и сделал все с нуля. Надеюсь это хоть как-то поможет тебе: это пример с использованием компонента (в этом случае я сомневаюсь что можно будет обращаться к дочерним элементам загружаемого мувика, хотя нужно проверить), можно еще и с использованием муви клипов (а так точно можно обращаться к дочерним анимациям). Если захочешь то с муви клипом тоже сделаю.
__________________
Учусь флэшу с 01.01.2009 Status: Beginner Последний раз редактировалось Arif flasher; 19.03.2009 в 13:59. |
|
|||||
Регистрация: Mar 2009
Сообщений: 65
|
Всем огромное спасибо за информацию, очень помогли ваши посты!
Попробую объяснить заказчику более правильный вариант реализации аваторов (думаю скорее придётся ему дать урок по Флешу и AS3 ). |
|
|||||
[+4 14.03.09]
|
всегда пожалуйста, рад был помочь
вот и код для муви клипа вместо компонента: var btnArray:Array = [btn1_mc,btn2_mc,btn3_mc]; var loaded:Boolean = false; for (var i:uint = 0; i<btnArray.length; i++) { btnArray[i].addEventListener(MouseEvent.CLICK, loadAnimation); btnArray[i].buttonMode = true; btnArray[i].targetAnimation = "animation" + (i+1) + ".swf"; } function loadAnimation(event:MouseEvent):void { if (loaded) { ekran_mc.removeChildAt(1); } var req:URLRequest = new URLRequest(event.target.targetAnimation); var loader:Loader = new Loader(); function fileLoaded(event:Event):void { percent_txt.visible = false; ekran_mc.addChild(loader); loaded = true; } function preload(event:ProgressEvent):void { percent_txt.visible = true; var percent:Number = Math.round(event.bytesLoaded / event.bytesTotal * 100); percent_txt.text = String(percent) + "%"; } loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preload); loader.load(req); }
__________________
Учусь флэшу с 01.01.2009 Status: Beginner |
Часовой пояс GMT +4, время: 17:39. |
|
« Предыдущая тема | Следующая тема » |
|
|