繁体   English   中英

kineticjs - 在循环中设置画布上多个图像的位置

[英]kineticjs - set position of multiple images on canvas within a loop

如何在循环中在画布上设置多个图像的位置? 以下似乎适用于:

for (var i=1; i<10; i++) {
  images[i]=new Image();
  images[i].onload = function() {
    drawImage(this, 1, 1, i*50, 700, "bulb"+i);
    // THE POSITION CANNOT BE SET ; i IS ALWAYS 500
  }
  images[i].src = folder+src[i];
}

在您的示例中, i在函数外部有闭包,因此它的值与循环结束时的值相关联。

你可以像这样解决它:

for (var i=1; i<10; i++) {
  images[i]=new Image();
  images[i].onload = (function(x) {
    return function () {
      drawImage(this, 1, 1, x*50, 700, "bulb"+x);
    };
  }(i));
  images[i].src = folder+src[i];
}

这为每个onload函数创建了一个新的闭包,将它分配给x每个循环迭代。

请注意,这是一个相当常见的JavaScript错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM