javascript - 使用用户输入在 HTML5 Canvas 中移动对象

标签 javascript html canvas addeventlistener keycode

我只是 JavaScript 的新手,我的代码有问题,我试图通过用户输入在 Canvas 上移动对象。

使用 Firefox 运行它时工作正常,但使用 Chrome 时用户输入移动方 block 不起作用,我想知道这是为什么?

<!DOCTYPE html>
<html>
 <head>
    <canvas id = "gameCanvas" width="400" height="400" style = "border:1px solid #000000;"></canvas>
   <style type="text/css"></style>
</head>
<body>
<script type="text/javascript">
   var c = document.getElementById("gameCanvas");
    var ctx = c.getContext("2d");
    ctx.fillStyle = "rgb(255, 0, 0)";

    var snake = {
        x: 5
        , y: 5
      };


    function drawSnake() {
        ctx.fillRect(snake.x ,snake.y,20,20);
      }

    window.addEventListener("keypress", function(event) { 
        if (event.keyCode == 39)
          snake.x += 5;
        else if (event.keyCode == 37)
          snake.x -= 5;
        else if (event.keyCode == 38)
          snake.y -= 5;
        else if (event.keyCode == 40)
          snake.y += 5;

        drawSnake();
      });

   drawSnake();
</script>
</body>
</html>

最佳答案

您必须将 keypress 事件更改为 keydown 以使其在基于 IE 和 Chromium 的浏览器中工作。

关于javascript - 使用用户输入在 HTML5 Canvas 中移动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33467137/

相关文章:

javascript - 在 FB.ui share_open_graph 调用中指定 'share' 文本

javascript - 按下后退按钮时页面内容不会改变

asp.net - 如何确保我的 href 优先于任何其他层,包括 flash?

javascript - 如何在 javascript 中进行深度复制?

javascript - 将 ACE 编辑器嵌入选项卡

javascript - 图库中的重复图像

javascript - 为什么我的 Angular 代码变成评论?

javascript - HTML2canvas 生成模糊图像

javascript - 在 Canvas 中填充凹形

javascript - 使用 Jest-Puppeteer (Javascript) 进行 HTML Canvas 测试