【问题标题】:Close Alert box without object in Flex关闭 Flex 中没有对象的警报框
【发布时间】:2012-05-21 10:56:01
【问题描述】:

我有一个包含两个状态(state1 和 state2)的应用程序。最初是 state1 弹出窗口,然后是 state2 弹出窗口。在 state2 上有许多显示警报的操作。 现在,如果我单击注销,State2 窗口将关闭并且 state1 弹出窗口但仍会弹出警报,现在我没有使用 PopUpmanger.removepopup() 删除警报对象。

【问题讨论】:

  • 这些Alert 调用是操作所必需的,还是信息/调试目的?如果是后者,您最好将它们从发布版本中删除。此外,理想情况下,应该在您退出 state2 并恢复到 state1 之前处理任何此类弹出窗口。
  • 下面的代码可以帮助你:--//////////// for(var i:int=0;i
  • systemManager.popUpChildren.numChildren 如果有警报,则返回 0 甚至警报
  • 在 systemManager.rawchildren 中哪里可以找到警报对象

标签: actionscript-3 apache-flex actionscript flex4 flex3


【解决方案1】:

您可以做的另一种解决方法是,如果警报打开,则将所有警报推送到数组中,如果警报关闭,您可以弹出它。如果警报在注销时打开,您可以获得警报对象,然后您可以通过 for 循环使用 PopUpManager.removePopUp() 删除。

//Global array for your application// 
private var tempArray:Array = new Array();

//When you open first alert
var alert1:Alert = Alert.show("First Alert", "Alert");
tempArray.push(alert1);

//When you open second alert
var alert2:Alert = Alert.show("SecondAlert", "Alert");
tempArray.push(alert2);

//类似这样的东西....未测试....

for(var i:int=tempArray.length-1;0< i;i--){
PopUpManager.removePopUp(tempArray[i]);
tempArray.pop();
}

//以下代码未测试 或

PopUpManager.removeAllPopUps()

public function closeAllPopup():void
{
var systemManager:SystemManager = Application.application.systemManager
var childList:IChildList = systemManager.rawChildren
for (var i:int=childList.numChildren-1; i >=0; i– )
{
var childObject:* = childList.getChildAt(i)
if (childObject is UIComponent)
{
var uiComponent:UIComponent = childObject as UIComponent
if (uiComponent.isPopUp)
{
PopUpManager.removePopUp(uiComponent)
}
}
}
}

或查看以下链接:-

http://www.devahead.com/blog/2009/12/getting-all-the-popups-in-a-flex-application/

【讨论】:

  • 在应用程序中大约有 1000 个警报,所以甚至想不到这样做
猜你喜欢
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
相关资源
最近更新 更多