2013-11-24 49 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

相關問題