Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как сделать s:TitleWindow (не)активным без PopUpManager'а? (http://www.flasher.ru/forum/showthread.php?t=183120)

trashcoder 12.08.2012 23:19

Как сделать s:TitleWindow (не)активным без PopUpManager'а?
 
Как сделать s:TitleWindow (не)активным без PopUpManager'а? (То есть, речь идет не о фокусе и не об enabled, а о состояниях, которые inactiveGroup) Менять currentState вручную или наследоваться от него видится мне слегка костыльным, когда все, что нужно там уже есть. Но, к сожалению, свойство active у TitleWindow приватное, и изменить извне его можно только через слушатель:
Код AS3:

//TitleWindow.as
 
private function activateHandler(event:Event):void
{
    active = true;
    invalidateSkinState();
}
 
private function deactivateHandler(event:Event):void
{
    active = false;
    invalidateSkinState();
}
 
private function addActivateHandlers():void
{
    focusManager.addEventListener(FlexEvent.FLEX_WINDOW_ACTIVATE,
        activateHandler, false, 0, true);
    focusManager.addEventListener(FlexEvent.FLEX_WINDOW_DEACTIVATE,
        deactivateHandler, false, 0, true);
}

Но тут начинается магия. Как диспатчить эти события совершенно непонятно, ведь focusManager - один на контейнер, а в FlexEvent'е никакой информации о том, к чему именно оно относится, нет. Само собой, это не работает:
Код AS3:

titleWindow.focusManager.dispatchEvent(new FlexEvent(FlexEvent.FLEX_WINDOW_DEACTIVATE));

Но как-то же оно работает в PopUpManager'e, хотя в исходнике PopUpManagerImpl ничего к этому относящегося не нашел. Какие тут есть варианты?


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

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