javascript - 通过 JavaScript 使用 Canvas,如何通过箭头键移动对象?

标签 javascript html canvas

我刚开始尝试为一个有趣的小项目制作一款游戏。我还是 canvas 的新手,只是想知道如何通过箭头键移动这个红色方 block ?我了解 keyup 事件,但不确定如何将它与 Canvas 合并。提前致谢

<canvas id="myCanvas" height="400" width="400" style="border: 1px solid black"></canvas>

let canvas = document.getElementById("myCanvas");
let ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.translate(120,120);
ctx.lineTo(0,0);
ctx.lineTo(160,0);
ctx.lineTo(160,160);
ctx.lineTo(0,160);
ctx.lineTo(0,0);
ctx.fillStyle = "red";
ctx.fill();
ctx.stroke();

document.addEventListener('keydown', function(event) {
console.log(event.keyCode);
if (event.keyCode == 37) {
  ctx.clearRect(0, 0, c.width, c.height);
  ctx.translate(0,0);
}

最佳答案

我已将您绘制的形状放入函数中,以便在您按下按键清除 Canvas 后再次调用它。此外,由于您正在翻译上下文,因此您需要从 (-120, -120) 中清除。我希望它有所帮助。

let canvas = document.getElementById("myCanvas");
let ctx = canvas.getContext("2d");

ctx.translate(120,120);
myShape()

document.addEventListener('keydown', function(event) {
console.log(event.keyCode);
if (event.keyCode == 37) {
  ctx.clearRect(-120, -120, canvas.width + 120, canvas.height + 120);
  ctx.translate(-120,-120);
  myShape()
}});


function myShape(){
ctx.beginPath();
ctx.lineTo(0,0);
ctx.lineTo(160,0);
ctx.lineTo(160,160);
ctx.lineTo(0,160);
ctx.lineTo(0,0);
ctx.fillStyle = "red";
ctx.fill();
ctx.stroke();}
<canvas id="myCanvas" height="400" width="400" style="border: 1px solid black"></canvas>

关于javascript - 通过 JavaScript 使用 Canvas,如何通过箭头键移动对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155637/

相关文章:

javascript - 如何使用拖放

html - 在 html/css 中制作简单的 metro 风格菜单

html - 如何使用 HTML5 水平翻转图像

javascript - HTML5 Canvas,更好的像素控制和更快的速度

javascript - 如何使用本地存储进行事件类?

javascript 不将用户带到重定向页面

c# - 如何在 C# 事件中使用 HTML 和 CSS 标签?

javascript - 将对象数组操作为新数组

javascript - 单击 Ajax 可排序表的一行时如何打开信息窗口

java - 画完 Canvas 后如何使 Canvas 变白?