1

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

4

1 回答 1

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/
于 2012-05-21T11:38:23.233 回答