【问题标题】:Flex: How to determine if a PopUpManager window is open (or when it has closed)?Flex:如何确定 PopUpManager 窗口是否打开(或何时关闭)?
【发布时间】:2011-09-06 17:03:09
【问题描述】:

在 Flex (Flash Builder 4) 中,我通过 PopUpManager.addPopUp 打开一个新窗口。我的组件中有计时器代码,我需要在该窗口打开时停止计时器,并在窗口关闭时再次启动计时器。

我认为在打开窗口的函数中停止计时器很容易,但是当窗口关闭时如何重新启动计时器?

有没有办法通过PopUpManager判断我的组件前面是否有弹出窗口,或者特定的弹出窗口是否仍然打开?

也许事件是更好的方法?

谢谢!

【问题讨论】:

  • 您回答了自己的问题,不是吗? ;) 事件 FTW
  • 我可能不明白你的问题,但看起来你需要知道弹出窗口是否关闭。如果是这种情况,那么我需要知道窗口是否关闭。我的问题是,你是如何关闭你的窗口的。添加按钮并在该按钮上注册单击处理程序的常用方法,这将调用弹出管理器来关闭您的窗口。你不这样做吗?
  • 是的,我正在使用 PopUpManager.removePopUp(this);

标签: apache-flex events flash-builder popupwindow


【解决方案1】:

活动!是要走的路。 启动/关闭期间的火灾事件。在事件处理程序中添加您的逻辑!

【讨论】:

  • 我喜欢这个想法,但是(忍受我的学习过程)如果我有两个相同的组件并且它们都打开一个弹出窗口会发生什么。从弹出窗口#2 中抛出一个事件最终会发送到组件 1 和组件 2 吗? (那么组件如何知道哪个事件对他们意味着什么?或者我可能错了?)
【解决方案2】:

您可以使用以下代码检查打开的弹出窗口是否正在关闭。 如果它关闭,您可以停止计时器。

  //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.
     }
 }

现在您可以在打开弹出窗口时启动计时器。

【讨论】:

    【解决方案3】:

    popupmanager 是一个单例类,所以你可以很容易地知道他的 ChildList 已经创建了多少弹出窗口

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      相关资源
      最近更新 更多