1

2 つの状態 (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 に答える