2012-05-21 3 views
1

У меня есть приложение, состоящее из двух состояний (state1 и state2). Внутри state1 всплывающие окна, а затем state2 всплывающие окна. В состоянии2 есть числа операций, которые показывают предупреждение. Теперь, если я нахожусь на выходе, окно State2 закрывается и всплывает всплывающее окно state1, но предупреждение все же остается всплывающим. Теперь у меня нет объекта предупреждения для удаления с помощью PopUpmanger.removepopup().Закрыть окно оповещения без объекта в Flex

+0

Эти вызовы «Alert» необходимы для работы или являются ли они информационными/отладочными? Если последнее, вы должны идеально удалить их из сборки релиза. Кроме того, любые такие всплывающие окна в идеале должны быть рассмотрены в то время, когда вы покидаете 'state2' и до того, как вы вернетесь в' state1'. – dirkgently

+0

http://stackoverflow.com/a/6980258/842112 –

+0

Ниже приведен код, который может вам помочь: - ///////////// for (var i: int = 0; i

ответ

1

Еще одно обходное решение, которое вы можете сделать, направить все предупреждения в массив, если предупреждение открыто, и если оповещение закрыто, вы можете его всплыть. Если при выходе из системы открыто предупреждение, вы можете получить объект предупреждения, а затем вы можете удалить его с помощью метода 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/ 
+1

в В приложении около 1000 предупреждений, поэтому не могу даже думать о doin so – Sushant

Смежные вопросы