![](/img/trans.png)
[英]function that depends on html5 canvas and javascript is not working
[英]Why is this Javascript/HTML5 Canvas not working?
我正在尝试创建一个简单的游戏,然后按左右按钮,应该可以移动图片(并且在另一张图片trexf
和trexb
之间变化)。
<canvas id="canvas" width="640" height="480" >
Browser doesn't support canvas.
</canvas>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var width, height, rightKey = false, leftKey = false, upKey = false, downKey = false, rex_x, rex_y = 300, trexf, trexb;
trexf = new Image('Trexf.png');
trexb = new Image('Trexb.png');
function clearCanvas() {
canvas.width = canvas.width;
}
function drawRex() {
if(rightKey) {
rex_x += 5;
} else if(leftKey) {
rex_x -= 5;
}
ctx.drawImage(trexf, rex_x, rex_y);
if(rightKey == false || leftKey == false) {
ctx.drawImage(trexb, rex_x, rex_y);
}
}
function loop() {
clearCanvas();
drawRex();
}
function keyDown(e) {
if(e.keyCode == 39)
rightKey = true;
else if(e.keyCode == 37)
leftKey = true;
}
function keyUp(e) {
if(e.keyCode == 39)
rightKey = false;
else if(e.keyCode == 37)
leftKey = false;
}
function init() {
ctx.canvas.width = window.innerWidth - 30;
ctx.canvas.height = window.innerHeight - 30;
document.addEventListener('keydown', keyDown, false);
document.addEventListener('keyup', keyUp, false);
rex_x = canvas.width / 2;
setInterval(loop, 1000);
}
init();
试试吧上的jsfiddle。
为什么这不起作用?
这对我在Chrome中有效,但是您的绘制间隔太大(1秒),因此在重绘之前触发了按键向上事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.