【发布时间】:2011-09-06 08:30:36
【问题描述】:
在特定的画布中,我希望用户能够按下将触发事件的组合键。(有点像旧的巨型游戏中的作弊)。不知道从哪里开始。任何人都知道这是否可能,如果可以,你能给我一个如何开始的线索吗?
提前致谢!
【问题讨论】:
标签: apache-flex flex3 keyboard keypress combinations
在特定的画布中,我希望用户能够按下将触发事件的组合键。(有点像旧的巨型游戏中的作弊)。不知道从哪里开始。任何人都知道这是否可能,如果可以,你能给我一个如何开始的线索吗?
提前致谢!
【问题讨论】:
标签: apache-flex flex3 keyboard keypress combinations
您可以为KeyboardEvent.KEY_DOWN 事件添加一个eventListener 到顶级应用程序并检查那里的组合键。来自this article:
<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>
【讨论】:
画布不会调度按键向上或按键向下事件。你可以为它们添加一个监听器;因为关键事件会冒泡;但它不会单独派遣他们。不幸的是,输入组件(例如 textInput)需要获得焦点才能调度按键事件。
我不使用画布、组或其他容器,而是考虑使用带有自定义外观的Spark TextInput,使其和键入的文本基本上不可见。
【讨论】: