Flash actionscript 2.0-按键为向下和向下切换的可选选项

Flash actionscript 2.0-按键为向下和向下切换的可选选项,flash,actionscript,Flash,Actionscript,我希望一些代码只在按键时激活一次 就像在一些C风格的库(如SDL)中一样,在SDL中,会生成一个“Key Down”(向下键)事件,然后在您抬起键时生成一个“Key Up”(向上键)事件 在ActionScript2.0中是否可以执行类似的操作,而不仅仅是“isDown”或“isToggled” 我得到的最接近这样的东西是使用这样的布尔变量 var done:Boolean = false if ( Key.isDown ( Key.SPACE ) && done == fals

我希望一些代码只在按键时激活一次

就像在一些C风格的库(如SDL)中一样,在SDL中,会生成一个“Key Down”(向下键)事件,然后在您抬起键时生成一个“Key Up”(向上键)事件

在ActionScript2.0中是否可以执行类似的操作,而不仅仅是“isDown”或“isToggled”

我得到的最接近这样的东西是使用这样的布尔变量

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

“//Code here”只在按下键时运行一次,这正是我想要的,但我不想为要检查的每个键创建一个变量,如果您知道我的意思,它似乎“无效”。

您可以向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);