Flex: Как определить, открыто ли окно PopUpManager (или когда оно закрылось)? - PullRequest
0 голосов
/ 06 сентября 2011

Во Flex (Flash Builder 4) я открываю новое окно через PopUpManager.addPopUp. У меня есть код таймера, который запускается в моем компоненте, и мне нужно остановить таймер, когда это окно открывается, и снова запустить таймер, когда окно закрывается.

Я полагаю, достаточно просто остановить таймер в функции, которая открывает окно, но как я могу запустить таймер снова, когда окно закроется?

Есть ли способ узнать, есть ли всплывающее окно перед моим компонентом или определенное всплывающее окно все еще открыто через PopUpManager?

Может быть, лучше подходить к событиям?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 06 сентября 2011

События! это путь Пожарные события во время запуска / закрытия. Добавьте свою логику в обработчики событий!

0 голосов
/ 17 июня 2013

Вы можете использовать следующий код, чтобы проверить, закрывается ли открытое всплывающее окно или нет. если он закрыт, вы можете остановить таймер.

  //set the flag to find your popup window is exist or not.
  private var isPopupExist:Boolean = false;

  private function closePopUpWindow():void
  {

   var systemManager:SystemManager = FlexGlobals.topLevelApplication.systemManager;
   //Returns a list of all children.
   var childList:IChildList = systemManager.rawChildren;
   for(var i:int=childList.numChildren-1;i>=0;i--)
   {
      var childObject:* = childList.getChildAt(i);
      //If child object is Uicomponent.
      if (childObject is UIComponent)
      {
      var uiComponent:UIComponent = childObject as UIComponent;
      //If uicomponent is popup and class name is equal to **your popup component name** here i am using "ChatComp".

          if (uiComponent.isPopUp && uiComponent.className == "ChatComp")
          { 
                  isPopupExist = true;
          }
      }
   } 
}

в вашем таймере,

  private function checkPopUpExistance():void
  {
     call closePopUpWindow() function for every 1 sec or any seconds(your wish) to check whether popup is exist or not.
     if(isPopupExist)
     {
       here you stop the timer.
     }
 }

Теперь вы можете запустить таймер, когда вы открыли всплывающее окно.

0 голосов
/ 06 сентября 2011

popupmanager является одноэлементным классом, поэтому вы можете легко узнать, сколько всплывающих окон было создано с помощью его ChildList

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/PopUpManagerChildList.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...