javascript - 尝试在按下按键时使矩形在 Canvas 中移动,但它不起作用

标签 javascript jquery canvas html5-canvas

$(document).ready(function() {
  var canvas = document.getElementById('myCanvas');
  canvas.addEventListener("keydown", doKeyDown, false);

  var context = myCanvas.getContext("2d");
  context.fillRect(100, 100, 50, 30);

  var canvasWidth = myCanvas.width;
  var canvasHeight = myCanvas.height;

  var x = 100;
  var y = 100;

  function doKeyDown(e) {       
    switch(e.keyCode) {
    case 87:
      y = y - 10;
      context.fillRect(x, y, 50, 30);
      break;
    case 83:
      y = y + 10;
      context.fillRect(x, y, 50, 30);   
      break;
    case 65:
      x = x - 10;
      context.fillRect(x, y, 50, 30);
  break;
    case 68:
      x = x + 10;
      context.fillRect(x, y, 50, 30);       
      break;
    }
  }

  function clearCanvas() {
    context.clearRect(0, 0, canvasWidth, canvasHeight);
  }

});

应该发生的是,当按下 W/A/S/D 时,矩形将“移动”。但什么也没发生,我不确定为什么。我尝试过对“e”使用不同的名称,这当然没有什么区别。我一直在寻找拼写错误。运气不好。

最佳答案

它非常适合我。我在 jsfiddle 中对其进行了测试,当 Canvas 具有焦点时,它可以完美地工作。

http://jsfiddle.net/spedwards/c2Caj/

请记住在重绘矩形之前使用 clearCanvas() 函数。

编辑:更新了我的 jsfiddle,以便 Canvas 立即获得焦点。还添加了箭头键支持。

关于javascript - 尝试在按下按键时使矩形在 Canvas 中移动,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114807/

相关文章:

javascript - Fabric 3.4.0 文本格式

javascript - 将参数附加到 url 而不使用函数的最佳方法

javascript - 在 Unslider 上垂直滚动

javascript - Turfjs 多边形中的点总是返回 false

javascript - 仅替换函数第一次出现的情况

javascript - 重定向到包含 anchor 的 url

javascript - 删除更改 jquery 函数上的特定值

javascript - 如何使用 jquery 或 PHP 更改 img src 目录或图像文件名

html - 或多或少正确地从 RGB 转换为 CMYK

java - 游戏结束无法正常运行?