我一直在试图做一些看起来应该很简单的事情,但我一直在打墙。我想编写JavaScript代码,该代码需要在画布标签内部绘制图像并通过键盘输入移动它。当我按下右箭头键时,我希望图像向右移动。当我按左箭头键时,我想让图像向左移动。我希望它继续前进,直到我释放密钥为止,对每次按下按键时滑动一下的东西我都不感兴趣。这是我到目前为止:使图像在<canvas>与JavaScript键盘输入移动?
<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>
我一直在尝试从几个网站的例子,但没有一个工作。我能做的最好的事情是通过按键来反复重绘图像,这对我不起作用。任何提示或指导将不胜感激。如果你向我介绍工作代码,我会爱你的!
“我能做的最好的事情是用键盘重复地重新绘制图像,这对我不起作用。”我很抱歉地说你不能用其他方式。要在画布中获得某些动画,您需要重绘它。 – evolutionxbox
@evolutionxbox:那么,HTML5画布真的是那个贫民窟?你必须反复移除/重绘才能获得滑动图像效果?这对我来说似乎很荒谬。 – Matthew
这不是贫民窟。这就是所有动画的工作原理。使用CSS,您(程序员)无法访问该动画级别。 这就是你的电脑如何在你的显示器上放置图像。它一次又一次地以大约60倍的速度绘制它们。 – evolutionxbox