Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   отслеживание добавления мувиклипа через addChild() (http://www.flasher.ru/forum/showthread.php?t=205173)

Agni 21.11.2013 22:26

отслеживание добавления мувиклипа через addChild()
 
здравствуйте

есть код

Код AS3:

var temp:MovieClip = new cla_1  ;
main_mc.addChild(temp);//выполняются функции и методы описанные в классе  cla_1.as
 
var temp2:MovieClip = new name_5  ;
main_mc.addChild(temp2);

как сделать чтобы объект temp2 создавался уже после того как cla_1 уже бы разместился в родителе и отработался бы весь код, размещённый в cla_1.as

спасибо

alexandrratush 21.11.2013 22:35

Правильно так:
1. Отсылайте событие из cla_1.as после завершения нужного метода.
2. Слушайте это событие, и после того как оно наступит создавайте и добавляйте temp2.

ZackMercury 22.11.2013 01:50

Цитата:

Сообщение от Agni (Сообщение 1153270)
чтобы объект temp2 создавался уже после того как cla_1 уже бы разместился в родителе и отработался бы весь код, размещённый в cla_1.as

Мувиклип отсылает событие ADDED_TO_STAGE. Слушайте
Код AS3:

var temp1:MovieClip = new cla_1();
temp1.addEventListener(Event.ADDED_TO_STAGE, addNextItem);
main_mc.addChild(temp1);
var temp2:MovieClip;
 
function addNextItem(e:Event)
{
  temp2 = new name_5();
  main_mc.addChild(temp2);
}


Agni 22.11.2013 06:55

SuriTheAngel, спасибо

будет ли выполнение отличаться от:
Код AS3:

var temp1:MovieClip = new cla_1();
temp1.addEventListener(Event.ADDED_TO_STAGE, addNextItem);
main_mc.addChild(temp1);
 
function addNextItem(e:Event)
{
  var temp2:MovieClip = new name_5();
  main_mc.addChild(temp2);
}


Isfet 22.11.2013 07:42

отличаться будет тем, что доступ к temp2 после выполнения функции нужно будет искать через getChildAt() (а искать его надо будет допустим для того чтобы удалить), SuriTheAngel же сохранил ссылку на экземпляр, который можно будет быстро вызвать после выполнения функции.

А вообще, если у вас в классах нет никаких асинхронных операций(таких как ожидание загрузки данных с сервера), то и первый ваш код должен работать, и у соответственно у вас кривой класс.

если есть асинхронные операции, то я бы в классе cla_1 диспатчил событие (dispatchEvent(new Event("initComplete")));
а в главном окне ловил его

Код AS3:

var temp1:MovieClip = new cla_1();
temp1.addEventListener("initComplete", addNextItem);



Часовой пояс GMT +4, время: 18:38.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.