Apache flex Flex 3:按键组合触发事件/功能

Apache flex Flex 3:按键组合触发事件/功能,apache-flex,flex3,keyboard,keypress,combinations,Apache Flex,Flex3,Keyboard,Keypress,Combinations,在特定的画布中,我希望用户能够按组合键触发事件(有点像旧megadrive游戏中的作弊)。但不知道从哪里开始。有人知道这是否可能,如果有,你能给我一个如何开始的线索吗 提前谢谢 画布不会分派向上键或向下键事件。您可以向它们添加一个侦听器;因为关键事件将出现泡沫;但它不会单独派遣他们。不幸的是,输入组件(如textInput)需要有焦点才能分派按键事件 与使用画布、组或其他容器不同,我将研究如何使用一个自定义的皮肤,使其和键入的文本基本上不可见 画布不会分派向上键或向下键事件。您可以向它们添加一个

在特定的画布中,我希望用户能够按组合键触发事件(有点像旧megadrive游戏中的作弊)。但不知道从哪里开始。有人知道这是否可能,如果有,你能给我一个如何开始的线索吗


提前谢谢

画布不会分派向上键或向下键事件。您可以向它们添加一个侦听器;因为关键事件将出现泡沫;但它不会单独派遣他们。不幸的是,输入组件(如textInput)需要有焦点才能分派按键事件


与使用画布、组或其他容器不同,我将研究如何使用一个自定义的皮肤,使其和键入的文本基本上不可见

画布不会分派向上键或向下键事件。您可以向它们添加一个侦听器;因为关键事件将出现泡沫;但它不会单独派遣他们。不幸的是,输入组件(如textInput)需要有焦点才能分派按键事件

与使用画布、组或其他容器不同,我将研究如何使用一个自定义的皮肤,使其和键入的文本基本上不可见

您可以将eventListener添加到
键盘事件的顶级应用程序中。向下键
事件并检查其中的组合键。发件人:


您可以将eventListener添加到
键盘事件的顶级应用程序中。向下键
事件,并在那里检查组合键。发件人:



太好了,我可以在这里好好尝试一下。谢谢你的链接,这是真的;然而,正如我在自己的回答中所说的,仍然需要发送键盘事件;我不这样做。@www.Flextras.com这是真的。我只是不喜欢把焦点放在隐藏的组件上,只是为了调度KEY\u UP或KEY\u DOWN事件。在我看来,任何将光标或焦点的控制权从用户的控制中移除,或者依赖于某个任意隐藏控件中的焦点的东西都不是好的设计,没有任何争议。我没注意到你直接提到舞台。我不知道舞台会安排键盘事件[它只是在另一个问题中出现]。不过,我原本希望申请者是这个阶段的孩子,而不是相反。你必须直接听舞台,还是可以在应用层听;就像你在这里做的那样?太好了,我可以从这里好好尝试一下。谢谢你的链接,这是真的;然而,正如我在自己的回答中所说的,仍然需要发送键盘事件;我不这样做。@www.Flextras.com这是真的。我只是不喜欢把焦点放在隐藏的组件上,只是为了调度KEY\u UP或KEY\u DOWN事件。在我看来,任何将光标或焦点的控制权从用户的控制中移除,或者依赖于某个任意隐藏控件中的焦点的东西都不是好的设计,没有任何争议。我没注意到你直接提到舞台。我不知道舞台会安排键盘事件[它只是在另一个问题中出现]。不过,我原本希望申请者是这个阶段的孩子,而不是相反。你必须直接听舞台,还是可以在应用层听;就像你在这里做的那样?唯一的问题是我使用的flex3不支持spark组件。无论如何,谢谢你的建议@Michael Wilson你可以设计一个MX文本输入来做同样的事情,我只是觉得这样做很难。唯一的问题是我使用的flex3不支持spark组件。无论如何,谢谢你的建议@Michael Wilson你可以设计一个MX文本输入来做同样的事情,我只是觉得这样做很难。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="absolute" creationComplete="init()">
 <mx:Script>
 <![CDATA[
    private function init():void{
     this.addEventListener(MouseEvent.CLICK, clickHandler);
     this.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed);
    }
    private function clickHandler(event:MouseEvent):void {
      stage.focus = this;
    }
    private function keyPressed(evt:KeyboardEvent):void{
       if(evt.ctrlKey && evt.keyCode == 65)
             trace("CTRL A is pressed");
       if(evt.ctrlKey && evt.keyCode == 66)
             trace("CTRL B is pressed");
   }
 ]]>
 </mx:Script>
</mx:Application>