亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

向上和向下箭頭不能與 JavaScript 中的 onkeydown 一起使用

向上和向下箭頭不能與 JavaScript 中的 onkeydown 一起使用

浮云間 2023-06-09 17:37:08
我正在構建一個簡單的障礙游戲,我現在遇到的問題是我可以使用箭頭鍵左右移動,但不能上下移動。我不明白為什么當上下具有與左右相同的邏輯時它們不起作用。我對自己開發東西還很陌生,所以如果很明顯的話,請放輕松。:)document.addEventListener("DOMContentLoaded", () => {  // Grab the elements from the HTML  const floppy = document.getElementById("floppyDisk");  const gameBoard = document.querySelector(".gameBoard");  let userScore = document.getElementById("userScore");  let highscore = document.getElementById("highscore");  // Set up variables to be used later  let floppyPosX = 0;  let floppyPosY = 0;  let left = 20;  let top = 190;  // Use the arrows to move the floppy disk  function moveFloppy(e) {    if(e.keyCode == 39) {      left += 2;      floppy.style.left = floppyPosX + left + "px";    }    if(e.keyCode == 37) {      left -= 2;      floppy.style.left = floppyPosX + left + "px";    }    if(e.keycode == 38) {      top += 2;      floppy.style.top = floppyPosY + top + "px";    }    if(e.keycode == 40) {      top -= 2;      floppy.style.top = floppyPosY + top + "px";    }  }  // Invoke the moveFloppy function  document.onkeydown = moveFloppy;    // Generate Obstacles      // Function to move the obstacles    // Set function to repeat  // Call the function to generate the obstacles})
查看完整描述

1 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

您的問題是因為您使用的是已棄用(且定義不正確)KeyboardEvent.keyCode的屬性而不是標準化code屬性。

將您的 JavaScript 更改為此,它應該可以工作:

  • 免責聲明:

    • 小心,switch?因為它有 fallthrough,除非你使用break.

    • left我還沒有評估你/邏輯的正確性floppyPosX。

    • 我將您的if陳述更改為單一switch陳述。

function moveFloppy(e) {

? ? switch(e.code) {

? ? case 'ArrowLeft':

? ? ? ? left += 2;

? ? ? ? floppy.style.left = floppyPosX + left + "px";

? ? ? ? break;

? ? case 'ArrowRight':

? ? ? ? left -= 2;

? ? ? ? floppy.style.left = floppyPosX + left + "px";

? ? ? ? break;

? ? case 'ArrowUp':

? ? ? ? top += 2;

? ? ? ? floppy.style.top = floppyPosY + top+ "px";

? ? ? ? break;

? ? case 'ArrowDown':

? ? ? ? top -= 2;

? ? ? ? floppy.style.top = floppyPosY + top + "px";

? ? ? ? break;

? ? default:

? ? ? ? // TODO: Play a fart sound.

? ? ? ? break;

? ? }

}


document.addEventListener( 'keydown', moveFloppy );


查看完整回答
反對 回復 2023-06-09
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號