私にはシンプルなコンセプトがあります。プレイヤーが W、A、S、または D を押すと、それに応じてキャンバス上の画像が移動します。ただし、これにより非常に途切れ途切れのアニメーションが発生し、その理由はわかりません (ただし、イベント リスナーと関係があると思います)。以下は私のコードです。
var playerXPos = 10;
var playerYPos = 10;
var playerImg = new Image();
playerImg.src = "knight.png";
function mainGameLoop(){
window.requestAnimationFrame(mainGameLoop);
c = document.getElementById("gameCanvas").getContext("2d");
c.clearRect(0,0,1000,500);
c.drawImage(playerImg,playerXPos,playerYPos);
}
window.requestAnimationFrame(mainGameLoop);
window.addEventListener("keydown", onKeyDown, false);
window.addEventListener("keyup", onKeyUp, false);
window.addEventListener("keypress", onKeyPress, false);
function onKeyDown(e){
var keyCode = e.keyCode;
switch(keyCode){
case 87: //w
onKeyW();
break;
case 65: //a
onKeyA();
break;
case 83: //s
onKeyS();
break;
case 68: //d
onKeyD();
break;
}
function onKeyW(){
playerYPos -= 5;
}
function onKeyA(){
playerXPos -= 5;
}
function onKeyS(){
playerYPos += 5;
}
function onKeyD(){
playerXPos += 5;
}
なぜこれを行うのですか?どんな助けでも大歓迎です!
EDIT:補足として、ブール値を使用する前にこれを行いました(wキーが押されるとkeyW
変数がtrueになり、mainGameLoopにはありますif(keyW == true){playerYPos -= 5;}
)