Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5画布清除和重绘for循环_Javascript_Html_Image_Canvas_For Loop - Fatal编程技术网

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

Javascript HTML5画布清除和重绘for循环,javascript,html,image,canvas,for-loop,Javascript,Html,Image,Canvas,For Loop,我在玩JS,发现了一个小的HTML5游戏教程,我认为修改它会很酷。(这是结果:) 所以我稍微修改了一下,让for循环绘制背景。这幅画本身成功了,但有点不对劲。 我发现我必须清理画布并重新绘制每一帧的所有内容。我是这样做的: ctx.clearRect(0,0,canvas.width,canvas.height); 结果是,清除发生在循环完成绘制图像之前 这个周期是: 透明帆布 用于循环绘制背景平铺 画点别的 不知怎的,它没有输出背景平铺 我在这里包括了我的修改: 可能有什么问题?我发现

我在玩JS,发现了一个小的HTML5游戏教程,我认为修改它会很酷。(这是结果:)

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

ctx.clearRect(0,0,canvas.width,canvas.height);
结果是,清除发生在循环完成绘制图像之前

这个周期是:

  • 透明帆布
  • 用于循环绘制背景平铺
  • 画点别的
不知怎的,它没有输出背景平铺

我在这里包括了我的修改:


可能有什么问题?

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

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

正如我在评论中所写,你应该安排你的绘画

你可能还想寻找一种更好的方法来绘制地板,也许制作一个更大的纹理,只绘制一次,而不是在for循环中


编辑:修复了JSFIDLE链接,使其实际成为更新版本。

我找不到您的画布清除方法?对于您的跑步循环,最好尝试使用。我想更新延迟1毫秒可能是你的问题的一部分。如果我每次都将tileY设置为0,那么它只绘制第一行,不是吗?关于循环:有两个循环。一个代表Y,另一个代表X。我让它们都循环10次,所以Y不能永远循环。此外,包含的链接似乎与我的链接相同。如果在第一个for循环结束时进行设置,则是的,但应该在第一个for循环开始之前进行设置。在渲染函数的顶部。在代码的上半部分,它们实际上都设置为0。代码的上半部分只运行一次,每次渲染函数运行时都需要设置它,因为clearRect方法会清除所有内容,包括地板。看看我更新的小提琴。我现在明白了。谢谢你的帮助。:)