在AS3中不使用KeyboardEvent检查键盘状态

Pie*_*888 3 flash actionscript-3 keyboard-events enterframeevent

是否可以在不使用KeyboardEvent的情况下检查按下的键?

我有一个名为enterFrameHandler的ENTER_FRAME事件设置,如果按下任何键,我想在函数enterFrameHandler中检查.

使用的KeyboardEvent正常时,我可以检查很容易使用,检查事件的邀请码开关按键,但在一个ENTER_FRAME事件,这是不可能的我.

还有其他方法可以在ENTER_FRAME事件中检查键盘的状态吗?

更新:我发现了这个AS2脚本:

onClipEvent (enterFrame) {
    if (Key.isDown(Key.LEFT)) {
        _x -= power;
    }
    if (Key.isDown(Key.RIGHT)) {
        _x += power;
    }
    if (Key.isDown(Key.UP)) {
        _y -=power;
    }
    if (Key.isDown(Key.DOWN)) {
        _y +=power;
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎正在做我想要的,但它在AS2中,有没有人知道如何将其"翻译"为AS3?

ans*_*art 5

将键状态存储在字典或对象中:

stage.addEventListener(KeyboardEvent.KEY_UP, keyHandleUp);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandleDown);

private var hash:Object = {};

private function keyHandleUp(event:KeyboardEvent):void {
    delete hash[event.keyCode];
}

private function keyHandleDown(event:KeyboardEvent):void {
    hash[event.keyCode] = 1;
}

private function isKeyDown(code:int):Boolean {
    return hash[code] !== undefined;
}
Run Code Online (Sandbox Code Playgroud)