将键盘快捷方式添加到Flex应用程序

时间:2009-09-03 15:52:05

标签: flex actionscript-3

我有一个包含许多自定义组件的flex应用程序,如自定义按钮,组合框等。我正在尝试将keyBoard快捷方式添加到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函数。

有谁知道怎么做?

1 个答案:

答案 0 :(得分:2)

我的猜测是你的活动没有冒充听众。如果您正在严格查找键盘事件,并且不需要任何额外的有效负载,那么简单地监听您感兴趣的组件中的舞台事件可能会更有效,或者让舞台调度您的自定义事件并使用阶段感兴趣的组件中的.addEventListener ,而不是 this.addEventListener

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