Я пересоздал ваш код, и он отлично работает для меня :( Это означает, что либо я неправильно понял вашу проблему, либо ошибка в другом месте вашего кода.
Есть ли шанс, что вы можете опубликовать более подробную информацию о проблеме?
Sam
PS Вот код, с которым я тестировал:
Application.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Button x="10" y="10" label="Button" click="buttonClick(event)" id="popupButton"/>
<mx:Script>
<![CDATA[
import mx.core.IFlexDisplayObject;
import mx.managers.PopUpManager;
private var popup:Popup;
private function buttonClick(e:MouseEvent):void {
popup = PopUpManager.createPopUp(this, Popup, true) as Popup;
popup.addEventListener(Event.CLOSE, popupClose, false, 0, true);
}
private function popupClose(e:Event):void {
trace(popup);
popupButton.label = "Closed";
}
]]>
</mx:Script>
</mx:Application>
Popup.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Button x="167" y="123" label="Close me" click="buttonClick(event)"/>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
private function buttonClick(e:MouseEvent):void {
dispatchEvent(new Event(Event.CLOSE));
PopUpManager.removePopUp(this);
}
]]>
</mx:Script>
</mx:Canvas>