是否可以在不使用KeyboardEvent的情况下检查按下的键?
我有一个称为enterFrameHandler的ENTER_FRAME事件设置,我想在函数enterFrameHandler中检查是否按下了任何键。
通常,当使用KeyboardEvent时,我可以使用检查事件的KeyCode的开关轻松地检查键,但是在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;
}
}
这似乎可以满足我的要求,但是在AS2中,有人知道如何将其“转换”为AS3吗?
最佳答案
将关键状态存储在字典或对象中:
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;
}