HTML5画布清除和重绘与for循环

时间:2013-05-12 20:49:07

标签: javascript html image canvas for-loop

我正在玩JS,发现了一个小HTML5游戏教程,我觉得修改起来很酷。 (这是结果:http://www.lostdecadegames.com/demos...e_canvas_game/

所以我稍微修改了一下,让循环绘制背景。绘图本身成功了,但它有些不对劲。 我发现我必须清除画布并重绘每一帧的所有内容。我是这样做的:

ctx.clearRect(0,0,canvas.width,canvas.height);

结果是清理发生在循环完成绘制图像之前。

周期是:

  • clear canvas
  • for loop drawing the background tiles
  • 画别的东西

不知怎的,它不会输出背景图块......

我在这里包含了我的修改: http://jsfiddle.net/swenn/6mWkU/

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

我发现你的代码有问题,你没有在绘制地板后将你的tileY变量设置回零。这会使画布进一步向下绘制,例如不在画布的视图空间中。

//Start of your render function.
tileY = 0;
tileX = 0;

Working version, webkit

正如我在评论中写的那样,你应该requestAnimationFrame安排你的绘画。

您可能还想了解一种更好的绘制地板的方法,可能会制作一个更大的纹理并仅绘制一次而不是for循环。

编辑:修正了实际上是更新版本的jsfiddle链接。