Ich bin dabei, ein kleines Spiel zu entwickeln. Ich verwende den folgenden Code, um die vom Spieler gedrückten Tasten zu erkennen:
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;
}
}
Das Ereignis 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;
}
}
Grundsätzlich wird die ShootKey-Taste vom Spieler fast die ganze Zeit gedrückt gehalten. Und die changeColorKey wird sehr oft gedrückt, aber nicht gedrückt gehalten. Beim Testen habe ich festgestellt, dass die onKeyUp-Ereignisse für die changeColorKey nicht ausgelöst werden, wenn die ShootKey und die rechte Pfeiltaste gedrückt gehalten werden. Wenn ich die Pfeiltaste nach oben oder unten statt des rechten Pfeils gedrückt halte, hat das denselben Effekt. Wenn ich die linke Pfeiltaste gedrückt halte, werden die Ereignisse ausgelöst. Warum tritt das auf? Ist mit meinem Code etwas nicht in Ordnung?