javascript - Kineticjs - 在循环内设置 Canvas 上多个图像的位置

标签 javascript kineticjs

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

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

请注意,这是一个相当 common JavaScript error

关于javascript - Kineticjs - 在循环内设置 Canvas 上多个图像的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20176720/

相关文章:

JavaScript,在不丢失引用的情况下覆盖对象

javascript - 如何使用 KineticJS 检测可拖动圆形何时与另一个圆形重叠?

javascript - 添加到 Canvas 的图像的奇怪行为

javascript - X 和 Y 到某个目的地如何制作动画

javascript - KineticJS 无法在 FF 和 IE 中工作

javascript - 在 Canvas 中使用 svg 对象而不是光栅图像对象

javascript - 当 div 有多个类时更改文本

javascript - 如何卡住 Javascript 超时和 BS4/jQuery 动画?

javascript - 如何在 Firebug 中搜索整个 JavaScript 对象?

javascript - 错误: $injector:unpr Unknown Provider when try delete a record