首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上下箭头在JavaScript中不使用onkeydown

上下箭头在JavaScript中不使用onkeydown
EN

Stack Overflow用户
提问于 2020-10-23 15:28:30
回答 1查看 260关注 0票数 1

我正在构建一个简单的障碍游戏,我现在遇到的问题是,我可以用箭头键左右移动,但不能上下移动。我不明白为什么上下不工作,当他们有相同的逻辑,左和右。我是一个人开发东西的新手,所以如果很明显的话,那就让我轻松一点吧。:)

代码语言:javascript
复制
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

})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 15:34:52

您的问题在于您使用的是the (and ill-defined) KeyboardEvent.keyCode property而不是标准化的code属性。

将您的JavaScript更改为此,它应该可以工作:

  • 小心switch

代码语言:javascript
复制
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 );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64502959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档