“FlexGlobals.topLevelApplication.addEventListener”无法捕获PopUp上的键盘输入

时间:2011-03-02 14:10:30

标签: flex popup global keypress

假设我有一个应用程序和一个全局事件监听器。在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 ..没有任何反馈。

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:5)

所有弹出窗口的父级都是SystemManager。因此,请使用FlexGlobals.topLevelApplication.systemManagerstage