【发布时间】:2020-08-03 19:17:21
【问题描述】:
我正在编写一个简单的游戏来学习 JS,并且我正在学习 HTML5,所以我需要在画布上绘制东西。
代码如下:
let paddle = new Paddle(GAME_WIDTH,GAME_HEIGHT);
new InputHandler(paddle);
let lastTime = 0;
const ball = new Image();
ball.src = 'assets/ball.png';
function gameLoop(timeStamp){
let dt = timeStamp - lastTime;
lastTime = timeStamp;
ctx.clearRect(0,0,600,600);
paddle.update(dt);
paddle.draw(ctx);
ball.onload = () => {
ctx.drawImage(ball,20,20);
}
window.requestAnimationFrame(gameLoop);
}
gameLoop();
截图:没有球 before comment
现在我注释掉clearRect():
你好球。
画布底部还有一个桨,似乎不受clearRect() 方法的影响。它工作得很好。我在这里错过了什么?
【问题讨论】:
-
“我错过了什么?”至少有一个
}开头。此外,如果您的缩进是正确的,这将有助于阅读您的代码。gameLoop永远不会被调用。根据前两点,如果ball.onload确实在gameLoop内部,它可能永远不会触发,因为它是一个事件侦听器,并且只会触发一次;你最好有ball.onload = galeLoop; -
@Kaiido 我已经包含了其余的代码。感谢您花时间研究这个问题。我会研究事件监听器
标签: javascript html canvas drawimage