私は2D Javascriptゲームの始まりを持っています - 現時点では、プレイヤーは矢印キーを使って画面の周りに三角形を動かすことができます.
onkeyup
問題は、対応するコントロール キーが再度押されてイベントが再度発生するまで、三角形が一方向に回転したり、前方に移動したりしてスタックする場合があることです。これは通常、複数のコントロール キーを同時に押したときに発生します。
onkeyup
なんらかの理由でイベントが発生しない限り、そもそもなぜ動かなくなっているのかわかりません。どんな助けでも大歓迎です、ありがとう。
コードの一部を次に示します。JSFiddle で完全に機能する例を見つけることができます。
...
function init(){
var canvas = document.getElementById('canvas');
if(canvas.getContext){
setInterval(play, 50);
}
}
function play(){
printTriState();
updateTriAcceleration();
applyTriVelocity();
updateTriRotation();
draw();
}
document.onkeydown = function(event){
if(!event.keyCode){
keycode = window.event.keyCode;
} else {
keycode = event.keyCode;
}
console.log(event.keyCode);
switch(keycode){
//left
case 37:
tri.rotation = -1;
break;
//up
case 38:
tri.throttle = true;
break;
//right
case 39:
tri.rotation = 1;
break;
//down
case 40:
tri.currentSpeed = 0;
break;
default:
break;
}
};
document.onkeyup = function(event){
if(!event.keyCode){
keycode = window.event.keyCode;
} else {
keycode = event.keyCode;
}
console.log(event.keyCode);
switch(keycode){
//left
case 37:
tri.rotation = 0;
break;
//up
case 38:
tri.throttle = false;
break;
//right
case 39:
tri.rotation = 0;
break;
//down
case 40:
break;
default:
break;
}
};
function updateTriRotation(){
if(tri.rotation == 1){
tri.orientation += tri.rotationSpeed;
} else if (tri.rotation == -1){
tri.orientation -= tri.rotationSpeed;
} else {
tri.orientation += 0;
}
}
...