如何删除/关闭Flex应用程序中的多个弹出窗口?

时间:2012-03-15 05:01:37

标签: actionscript-3 flash flex air

如果我们在浏览(网页)或AIR应用程序中打开大量弹出窗口,请立即删除它们?

2 个答案:

答案 0 :(得分:2)

我认为没有真正要求用弹出式管理器删除所有弹出窗口。我认为您需要在列表中保留对每个实例的引用,并为每个实例调用PopUpManager.removePopUp。老实说虽然拥有大量弹出窗口(就用户体验而言)可能不是一个好主意,但可能会有一些情况,但我肯定会花一些时间来考虑它是否真的是最佳选择。

编辑:

您还可以考虑扩展PopUpManager并维护内部集合,看起来PopUpManager使用PopUpManagerImpl并且似乎没有公开它用于委派实际工作的impl属性,因此您可能需要扩展它们。但是你可以使用PopUpManagerImpl.mx_internal :: popupInfo,它是一个数组,其对象具有一个名为owner的属性,看起来它就像你想要提供给removePopUp的调用一样。

答案 1 :(得分:1)

在创建数组时添加数组中的所有弹出窗口。并删除所有弹出窗口

var popupCollection:ArrayCollection = new ArrayCollection;
var mypopup:IFlexDisplayObject;

PopUpManager.centerPopUp(mypopup=PopUpManager.createPopUp(this,popupWindow));
popupCollection.addItem(mypopup);

你可以使用循环

删除所有弹出窗口
PopUpManager.removePopUp(popupCollection[index] as IFlexDisplayObject);