gpt4 book ai didi

javascript - 使用 javascript 键盘输入使 中的图像移动?

转载 作者:行者123 更新时间:2023-11-30 16:45:15 25 4
gpt4 key购买 nike

我一直在尝试做一些看起来应该非常简单的事情,但我一直碰壁。我想编写 javascript 代码,该代码采用在 canvas 标签内绘制的图像并通过键盘输入移动它。当我按下向右箭头键时,我希望图像向右移动。当我按下左箭头键时,我希望图像向左移动。我希望它一直移动直到我松开按键,我对每次按键都会滑过一点的东西不感兴趣。这是我到目前为止的想法:

<html>
<body onload="load_image()">

<canvas id="myCanvas" width="320" height="240" style="border:1px solid #000000;">
<img id="testpic" src="testpic.png">
</canvas>

<script>
function load_image() {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = document.getElementById("testpic");
ctx.drawImage(img,10,10);}

document.addEventListener('keydown', function(event) {
if (event.keyCode == 37) {
// CODE THAT STARTS LEFT IMAGE MOVEMENT GOES HERE.
}
else if (event.keyCode == 39) {
// CODE THAT STARTS RIGHT IMAGE MOVEMENT GOES HERE.
}
}, true);

document.addEventListener('keyup', function(event) {
if (event.keyCode == 37) {
// CODE THAT STOPS LEFT IMAGE MOVEMENT GOES HERE.
}
else if (event.keyCode == 39) {
// CODE THAT STOPS RIGHT IMAGE MOVEMENT GOES HERE.
}
}, true);


</script>

</body>
</html>

我一直在尝试来自多个网站的示例,但没有一个有效。我能做的最好的事情就是用按键一遍又一遍地重新绘制图像,这对我不起作用。任何提示或指导将不胜感激。如果您向我提供工作代码,我会爱上您!

最佳答案

我在这里做了一个你想要的工作 fiddle :https://jsfiddle.net/uu4jqpqy/1/

要点是您必须让 setInterval 在按下键时在正确的方向上执行一个重绘循环,然后按下键清除该间隔:

if (event.keyCode == 37) {
// CODE THAT STARTS LEFT IMAGE MOVEMENT GOES HERE.
if(!leftPointer) {
leftPointer = setInterval(function () {
xval = xval - 1;
ctx.clearRect(0, 0, c.width, c.height);
ctx.drawImage(img,xval,yval);
}, speed)
}
}

if (event.keyCode == 37) {
// CODE THAT STOPS LEFT IMAGE MOVEMENT GOES HERE.
clearInterval(leftPointer);
}

您还必须在外部作用域中创建一些变量才能使其正常工作。

关于javascript - 使用 javascript 键盘输入使 <canvas> 中的图像移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com