ユーザーが WASD を使用して四角形をそれぞれ上下左右に移動する単純なキャンバスを作成しています。アニメーションは S キーと D キーでは正常に機能しますが、a キーを実行しようとすると機能しません。その理由はわかりません。以下は私のコードです。
//event listener
window.addEventListener("keydown", onKeyDown, false);
window.addEventListener("keyup", onKeyUp, false);
function onKeyDown(event){
var keyCode = event.keyCode;
switch(keyCode){
case 68: //d
keyD = true;
break;
case 83: //s
keyS = true;
break;
case 63: //a
keyA = true;
break;
}
}
function onKeyUp(event){
var keyCode = event.keyCode;
switch(keyCode){
case 68: //d
keyD = false;
break;
case 83: //s
keyS = false;
break;
case 63: //a
keyA = false;
break;
}
}
//neccessary variables
var tickX = 10;
var tickY = 10;
var keyW = false;
var keyA = false;
var keyS = false;
var keyD = false;
//main animation function
function drawStuff(){
window.requestAnimationFrame(drawStuff);
var canvas = document.getElementById("myCanvas");
var c = canvas.getContext("2d");
c.clearRect(0,0,500,500);
c.fillStyle = "blue";
c.fillRect(tickX,tickY,100,100);
if(keyD == true){
tickX+=5;
}
if(keyS == true){
tickY+=5;
}
if(keyA == true){
tickX--;
}
}
window.requestAnimationFrame(drawStuff);
これは tickX のデクリメントに問題がありますか? どんな助けでも大歓迎です!