Ric*_*rdo 5 keyboard flash events actionscript-3
我正在开发一款小游戏.我使用以下代码来检测播放器按下的键:
private function onKeyDown(event:KeyboardEvent):void {
//moviment keys
if (event.keyCode == 37 || event.keyCode == 65) {
this.leftKeyPressed = true;
}
if (event.keyCode == 39 || event.keyCode == 68) {
this.rightKeyPressed = true;
}
if (event.keyCode == 38 || event.keyCode == 87) {
this.upKeyPressed = true;
}
if (event.keyCode == 40 || event.keyCode == 83) {
this.downKeyPressed = true;
}
if (event.keyCode == this.shootKey) {
this.shootKeyPressed = true;
}
}
Run Code Online (Sandbox Code Playgroud)
onKeyUp事件:
private function onKeyUp(event:KeyboardEvent):void {
if (event.keyCode == 37 || event.keyCode == 65) {
this.leftKeyPressed = false;
}
if (event.keyCode == 39 || event.keyCode == 68) {
this.rightKeyPressed = false;
}
if (event.keyCode == 38 || event.keyCode == 87) {
this.upKeyPressed = false;
}
if (event.keyCode == 40 || event.keyCode == 83) {
this.downKeyPressed = false;
}
if (event.keyCode == this.shootKey) {
this.shootKeyPressed = false;
}
if (event.keyCode == changeColorKey) {
trace('color key released');
trace(getTimer());
this.changeColorKeyPressed = true;
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,几乎所有时间都会由玩家按住shootKey.并且会经常按下changeColorKey但不会按下.在测试时我注意到持有shootKey和右箭头,changeColorKey的onKeyUp事件不会被触发.按住向上或向下箭头键而不是向右箭头具有相同的效果.如果我按住左箭头键,事件就会被触发.它为什么会出现?我的代码有问题吗?
您看到的问题与您的代码无关,而是与您的键盘有关。根据键盘技术的不同,您可以同时按下的按键数量和组合也会有所不同。几年前我做了一个与你的代码非常相似的代码,我记得有你提到的同样的问题,而我当前的键盘不再发生这种情况(似乎这可以支持最多五个同时出现的字母,而旧的键盘支持三个) 。