在Flex中关闭没有对象的警报框

时间:2012-05-21 10:56:01

标签: actionscript-3 flex actionscript flex4 flex3

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

1 个答案:

答案 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/