【发布时间】:2021-03-05 16:01:37
【问题描述】:
我正在尝试编写一种画布绘图算法,该算法为数组中的每个元素绘制一个图像。 (例如[[0,0,0,0], [0,0,0,0]] 将产生 2*4 的草纹理)。但由于某种原因,图像只会加载一次。根据调试,没有错误并且循环正常工作,但图像只加载一次。我查看了 MDN,但我无法发现问题所在。有人可以帮忙吗?
for (rows in world) {
for (tile in world[rows]) {
var toDraw = {img: new Image(), x: rows * 64, y: tile * 64}
toDraw.img.addEventListener('load', function() {
ctx.drawImage(toDraw.img, toDraw.x, toDraw.y);
}, false);
switch(world[rows][tile]) {
case 0:
toDraw.img.src = "GrassTexture.png";
break;
}
}
}
【问题讨论】:
-
拜托,有人,找到一个副本。这个问题很愚蠢,因为
varvslet -
stackoverflow.com/questions/750486/… 也是相关的。当前代码更适合“旧”
forEach(),然后rows和tile不会成为全局变量,并且作用域也可以工作。
标签: javascript arrays image html5-canvas