С помощью PopupManager можно добавить / создать / удалить новое всплывающее окно. Но я не могу найти способ получить самый всплывающий список без переопределения этого класса (что вы хотите сделать для большого приложения Flex).
Пока что я нашел это решение, которое больше похоже на обходной путь. Поэтому, если у кого-то есть лучшее решение, я буду очень рад прочитать его.
Предполагается, что вы вызываете addPopup / createPopup с параметром PopUpManagerChildList.POPUP
, пример:
PopUpManager.createPopUp(parent,MyPopupClass,true,PopUpManagerChildList.POPUP);
Эта функция вернет самое всплывающее окно:
private function getTopMostPopup():void
{
var childList:IChildList = Application.application.systemManager.popUpChildren;
for (var i:int = childList.numChildren - 1; i > 0; i--)
{
var child:DisplayObject = childList.getChildAt( i );
if (child is Container)
return child;
}
return null;
}
Application.application.systemManager.popUpChildren
содержит все объекты DisplayObject, отображаемые с помощью PopupManager. Но многие из itemRenderers ваших компонентов могут быть в этом списке, даже если они не видны на экране. Вот почему моя функция получает последний дочерний элемент, наследуемый от Container (ваше всплывающее окно должно наследоваться от Container).