Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Порядок выполнения AS3 кода. (http://www.flasher.ru/forum/showthread.php?t=151260)

zorexundra 25.02.2011 11:23

Порядок выполнения AS3 кода.
 
Здравствуйте! Подскажите, пожалуйста!
Есть код:
Код AS3:

mx.managers.PopUpManager.addPopUp(myPopUp, this, true);
// "какой-то код"

Как заставить "какой-то код" выполняться после добавления myPopUp на сцену?

Astraport 25.02.2011 11:50

В самом myPopUp

Код AS3:

creationComplete="init(event)"
 
private function init(event:Event):void
                        {
                                //your code;
                        }


wvxvw 25.02.2011 19:14

Так вот там, где вы написали (в комментарии), и будет после того, как попап добавили на сцену. Только не нужно писать имена классов с пакетами:
Код AS3:

mx.managers.PopUpManager.addPopUp();

->
перед описанием класса:
Код AS3:

import mx.managers.PopUpManager;

внутри класса:
Код AS3:

PopUpManager.addPopUp();


zorexundra 28.02.2011 10:53

Astraport,
При добавлении myPopUp на сцену методом mx.managers.PopUpManager.addPopUp()
событие в myPopUp:
Event.INIT - не происходит
Event.ADDED - происходит до визуального добавления myPopUp на сцену
Event.ADDED_TO_STAGE - происходит до визуального добавления myPopUp на сцену
Event.ACTIVATE - не происходит
Event.COMPLETE - не происходит
Event.OPEN - не происходит
FlexEvent.CREATION_COMPLETE - не происходит
FlexEvent.INIT_COMPLETE - не происходит
FlexEvent.INITIALIZE - не происходит
FlexEvent.SHOW - не происходит
FlexEvent.ADD - происходит до визуального добавления myPopUp на сцену
FlexEvent.VALID - не происходит...
Устал перебирать... Есть ещё варианты?

wvxvw,
Нет. Это не так. В комментарии "энергоёмкий" код, и сперва выполняется он, а потом, с задержкой, на сцене появляется PopUp, который должен оповещать пользователя об этой самой задержке.

alatar 28.02.2011 11:44

Цитата:

Event.INIT - не происходит
С чего ему происходить? Это событие отправляется LoaderInfo при инициализации загрузки.
Цитата:

Event.ADDED - происходит до визуального добавления myPopUp на сцену
Событие отправляется при добавлении объекта в контейнер.
Цитата:

Event.ADDED_TO_STAGE - происходит до визуального добавления myPopUp на сцену
Объект добавлен на сцену, но updateDisplayList у него еще не вызван.
Цитата:

FlexEvent.CREATION_COMPLETE - не происходит
FlexEvent.INIT_COMPLETE - не происходит
FlexEvent.INITIALIZE - не происходит
Они уже произошли, вы передаете в PopUpManager уже готовый компонент.
Цитата:

FlexEvent.SHOW - не происходит
Отправляется при изменении visible

Устал расписывать, читайте про события.

Цитата:

Нет. Это не так.
Это так. Попап добавлен на сцену, просто еще не отрисован.
Цитата:

В комментарии "энергоёмкий" код
"энергоёмкий" код можно разбить на несколько не "энергоемких" и выполнить по ENTER_FRAME, например. Или вы предпочитаете подвисающие приложения? Или используйте createPopUp и отлавливайте CREATION_COMPLETE или слушайте UPDATE_COMPLETE.

zorexundra 28.02.2011 18:11

alatar, спасибо за ответ!
Изучать события гораздо дольше, нежели перебрать варианты для конкретного случая.

Разбиения операций по кадрам мне не требуется, но наоборот, требуется скорейшее выполнение кода (код выполняется по закрытию приложения пользователем и время отклика должно быть минимальным).
А метод createPopUp я не могу применить, потому что просто не знаю, как преобразовать IFlexDisplayObject в Class... :(

Цитата:

Это так. Попап добавлен на сцену, просто еще не отрисован.
:) вы уже сыты, просто ещё не пообедали.

alatar 28.02.2011 18:25

Цитата:

Изучать события гораздо дольше, нежели перебрать варианты для конкретного случая.
Брутфорс программирование? :confused:
Цитата:

потому что просто не знаю, как преобразовать IFlexDisplayObject в Class...
Вы же как-то создали, то что у вас в myPopUp.
Цитата:

вы уже сыты, просто ещё не пообедали.
Про жизненный цикл компонентов хоть что нибудь слышали?

zorexundra 28.02.2011 18:39

1. Нет, иезуитство: все средства хороши :)
2. Этот элемент создан в визуальной среде Flash Builder-а и уже находится на сцене.
3. Кажется я ясно выразился, что мне необходимо своевременное получение визуального представления элемента PopUp.

alatar 28.02.2011 18:51

Цитата:

мне необходимо своевременное получение визуального представления элемента PopUp.
Кажется я ясно выразился, слушайте UPDATE_COMPLETE.

zorexundra 28.02.2011 18:59

alatar, ещё раз спасибо за ответ!


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

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