0

我希望某些代码仅在按下键时激活一次。

就像在 SDL 等一些 C 风格的库中,会生成“Key-Down”事件,然后在您抬起键时生成“Key-Up”事件。

可以在 actionscript 2.0 中完成类似的操作,而不仅仅是“isDown”或“isToggled”。

我最接近这样的事情是使用这样的布尔变量

var done:Boolean = false
if ( Key.isDown ( Key.SPACE ) && done == false )
{
//code here
done = true;
}

'//此处的代码'只会在按下我想要的键时运行一次,但我不想为我要检查的每个键创建一个变量,如果你知道的话,这似乎是“无效的”我的意思是。

4

1 回答 1

0

您可以将静态事件侦听器添加到 Key 对象。但是,只要用户按住按键,按键按下事件将继续间隔触发。正如您所说,您可以使用布尔值检测到这一点。或者,如果您想要更通用的解决方案,可以使用布尔图。此映射告诉您当前哪些键被按下,因此您可以判断按键按下事件是否对应于用户实际按下键或只是按住它。

var listener:Object = {};
var downMap:Array = [];
listener.onKeyDown = function():Void {
    if(!downMap[Key.getCode()]) {
        trace("first key down:" + Key.getCode());
        downMap[Key.getCode()] = true;
    }
    trace("down:" + Key.getCode());

};
listener.onKeyUp = function():Void {
    trace("up:" + Key.getCode());
    downMap[Key.getCode()] = false;
};
Key.addListener(listener);
于 2013-08-27T14:15:42.003 回答