Apache flex 向flex应用程序添加键盘快捷方式
我有一个带有很多自定义组件的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
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 作为惯例,我从不依赖事件冒泡。它会混淆应用程序并产生歧义。最好明确定义事件结构,以获得对应用程序的额外控制,并使调试更加容易