Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Событие отображения UIComponent на сцене. (http://www.flasher.ru/forum/showthread.php?t=151529)

zorexundra 01.03.2011 12:06

Событие отображения UIComponent на сцене.
 
Здравствуйте! Скажите, пожалуйста!
Какое событие возникает при появлении mx.core.UIComponent на сцене?
Именно в тот момент, когда UIComponent становится виден на экране в своём окончательном варианте.

Slavian84 01.03.2011 12:31

http://help.adobe.com/ru_RU/AS3LCR/F...0.0/index.html

по видимому show

zorexundra 01.03.2011 12:43

Уточню вопрос. Есть код:
Код AS3:

function myFunction(event):void{
    var i:int = 1;
}
myPopUp.addEventListener("Событие", myFunction);
mx.managers.PopUpManager.addPopUp(myPopUp, this, true);

Какое событие нужно подставить вместо "Событие", чтобы код myFunction выполнился после того, как мы увидим на экране myPopUp.

Slavian84 01.03.2011 12:49

попробуй ComponentEvent.SHOW

там внизу пример есть.

Добавлено через 6 минут
http://help.adobe.com/ru_RU/AS3LCR/F...Component.html

...ну если я все правильно понял )

zorexundra 01.03.2011 13:01

Slavian84,
mx.core.UIComponent не включает в себя события пакета fl.events. И mx.events.FlexEvent.SHOW тоже не подходит.

... Может кто-нибудь посоветует какой-нибудь трюк для решения проблемы?

Slavian84 01.03.2011 13:34

странно, я читаю мануал про UIComponent и там есть событие show

так же там написано:

Цитата:

show Событие
Тип объекта события: fl.events.ComponentEvent
свойство ComponentEvent.type = fl.events.ComponentEvent.SHOW

zorexundra 01.03.2011 14:22

Slavian84,
наверно речь идёт о fl.core.UIComponent. Но я в IDE Flex, и раздел форума тоже.
Возможно, что одноимённые события в разных IDE однотипны по поведению в среде Flash, но я уже отметил, что это событие не подходит. Происходит-ли оно вообще в моём случае, я не скажу. Потому что многие события перепробывал, и уже окончательно в них запутался...
Кажется (крещусь), в моём случае без "хака" не обойтись.

alatar 01.03.2011 15:06

zorexundra, чем вас FlexEvent.UPDATE_COMPLETE не устраивает? Оно отправляется после вызова validateSize и/или validateProperties и/или validateDisplayList и после завершения эффектов.

zorexundra 01.03.2011 15:59

Здравствуйте, alatar!
Ваш совет действительно помог, но лишь отчасти.
Теперь myPopUp появляется в середине "зависалова", а не как прежде, в конце.
Но я хочу ещё сократить это время. Для меня желательно, чтобы PopUp появлялся так быстро, как если бы за ним не следовало никаких вычислительных операций, тобишь как в нормальном режиме.
Всё больше склоняюсь к решению проблемы с помощью таймера, но хочется найти решение поизящней...
И ещё всплыла проблемка:
Код AS3:

function myFunction(event):void{
    // этот код закрывает приложение.
}
myPopUp.addEventListener(FlexEvent.UPDATE_COMPLETE, myFunction);
mx.managers.PopUpManager.addPopUp(myPopUp, this, true);
PopUpManager.centerPopUp(myPopUp);

- Последняя строка кода уже не работает. И так тоже:
Код AS3:

function myFunction(event):void{
    PopUpManager.centerPopUp(myPopUp);
    // этот код закрывает приложение.
}
myPopUp.addEventListener(FlexEvent.UPDATE_COMPLETE, myFunction);
mx.managers.PopUpManager.addPopUp(myPopUp, this, true);


alatar 01.03.2011 16:38

Подписуетесь на UPDATE_COMPLETE. В обработчике UPDATE_COMPLETE подписуетесь ENTER_FRAME. В обработчике ENTER_FRAME запускаете ваши тормоза.


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

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