【问题标题】:Adding key board shortcuts to a flex application将键盘快捷键添加到 flex 应用程序
【发布时间】:2010-11-25 08:21:42
【问题描述】:

我有一个 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 函数。

有人知道怎么做吗?

【问题讨论】:

    标签: apache-flex actionscript-3


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多