我有一个由两个状态(state1和state2)组成的应用程序。最初是state1弹出窗口,然后是state2弹出窗口。在state2上有许多显示警报的操作。 现在,如果我单击注销,State2窗口关闭并且state1弹出,但仍然会弹出警报,现在我没有使用PopUpmanger.removepopup()删除警报对象。
答案 0 :(得分:1)
您可以执行的另一种解决方法是,如果警报已打开,则将所有警报推送到阵列,如果警报已关闭,则可以弹出警报。如果在注销时打开警报,则可以获取警报对象,然后可以使用Pop循环使用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/