2013-11-24 26 views
0

如何在循环内的画布上设置多个图像的位置?下面似乎一起工作:kineticjs - 在循环中设置画布上多个图像的位置

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]; 
} 
+0

此代码是否可用?如果是这样,你可以让var m = i * 50;警报(米);在你的循环内,看看是否一切正常? –

+0

Ow,看到您的评价...当然不能帮助您:D –

+0

当您得到解决您的问题的答案时,请记住接受它 - 请参阅http://meta.stackexchange.com/a/5235 – Krease

回答

2

在你的榜样,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

+0

谢谢许多! – user3027613

+0

有没有机会以另一种方式感谢你的提示?它解决了我的问题! – user3027613

+0

接受解决您的问题的答案(请参阅问题旁边的复选标记)是围绕这些部分执行此操作的方法:) – Krease

相关问题