假设我有一个应用程序和一个全局事件监听器。在PopUp中被解雇的关键事件是否会被该听众捕获?或者弹出窗口可能没有放在那个层次结构中? 这是简化的测试代码,让您了解我在说什么:
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script><![CDATA[
private function init():void {
FlexGlobals.topLevelApplication.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDownHandler);
}
private function myKeyDownHandler(event:KeyboardEvent):void {
Alert.show("It works!");
}
private function makeNewPopup():void {
var win:PopupWindow = new PopupWindow(this, new TestingForm(), true, "Popup", false);
win.showPopup();
}
]]></mx:Script>
<mx:VBox>
<mx:TextInput/>
<mx:Button label="MakePopup" click="makeNewPopup()"/>
</mx:VBox>
</mx:Canvas>
好的,我们有...在运行应用程序后,将输入焦点放入TextInput并按任意字母。警报将被解雇。现在,按MakePopup并在其中执行相同的TextInput ..没有任何反馈。
有关于此的任何想法吗?
答案 0 :(得分:5)
所有弹出窗口的父级都是SystemManager
。因此,请使用FlexGlobals.topLevelApplication.systemManager
或stage
。