Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 向flex应用程序添加键盘快捷方式_Apache Flex_Actionscript 3 - Fatal编程技术网

Apache flex 向flex应用程序添加键盘快捷方式

Apache flex 向flex应用程序添加键盘快捷方式,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我有一个带有很多自定义组件的flex应用程序,比如自定义按钮、组合框等。我正在尝试向flex应用程序添加键盘快捷键。为此,我在应用程序中添加了一个向下键侦听器,用于侦听ctrl+shift组合键,如下所示: this.stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown); 然后,我分派一个自定义事件,我的所有自定义组件都在侦听该事件: private function reportKeyDown(event:Keyboard

我有一个带有很多自定义组件的flex应用程序,比如自定义按钮、组合框等。我正在尝试向flex应用程序添加键盘快捷键。为此,我在应用程序中添加了一个向下键侦听器,用于侦听
ctrl+shift
组合键,如下所示:

this.stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
然后,我分派一个自定义事件,我的所有自定义组件都在侦听该事件:

private function reportKeyDown(event:KeyboardEvent):void
{
    var evtObj:Object = new Object();
    evtObj.keyEvent = event;
    dispatchEvent(new CustomEvent(CustomEvent.SHORTCUT_KEYS_PRESSED, evtObj, true, false));
}
在我的自定义按钮组件中,我有:

this.addEventListener(CustomEvent.SHORTCUT_KEYS_PRESSED, ShortCutKeysHandler, true);
因此,如果我使用
ctrl+shift+W
,那么我希望单击自定义按钮的一个实例

由于某些原因,事件从未被触发,也从未到达
ShortCutKeysHandler
函数


有人知道如何做到这一点吗?

我的猜测是,你的活动没有引起听众的兴趣。如果您严格地查找键盘事件,并且不需要任何额外的负载,那么只需在感兴趣的组件中侦听stage事件可能会更有效,或者让stage分派您的自定义事件,并在感兴趣的组件中使用stage.addEventListener而不是this.addEventListener

作为惯例,我从不依赖事件冒泡。它会混淆应用程序并产生歧义。最好明确定义事件结构,以获得对应用程序的额外控制,并使调试更加容易