我想將不同的圖像應用於多個畫布。多畫布圖像隨機出現
圖像被傳遞到一個json數組中,該數組在後面的代碼中生成,然後通過繪製到那裏特定的畫布。
現在這似乎有時偶爾渲染有時不工作。
所以這裏是代碼。
function renderPlayer() {
var imagesList = <%=imageList %>;
var size = imagesList.length;
for(var key in imagesList)
{
var image = imagesList[key][1];
var gridPosition = imagesList[key][0];
var playerCanvas = document.getElementById(gridPosition);
window.context2 = playerCanvas.getContext("2d");
//context2.save();
playerCanvas.setAttribute("width", 97);
var imageObj = new Image();
imageObj.src = image;
context2.drawImage(imageObj, 0, 10, 97, 97);
}
}
上面的代碼將它們放置在我期望它們的位置,但在每次頁面呈現時都沒有。
但是,下面的代碼似乎只呈現最後一張圖片。
function renderPlayer() {
var imagesList = <%=imageList %>;
var size = imagesList.length;
for(var key in imagesList)
{
var image = imagesList[key][1];
var gridPosition = imagesList[key][0];
var playerCanvas = document.getElementById(gridPosition);
window.context2 = playerCanvas.getContext("2d");
//context2.save();
playerCanvas.setAttribute("width", 97);
var imageObj = new Image();
imageObj.onload = function(){
context2.drawImage(imageObj, 0, 10, 97, 97);
};
imageObj.src = image;
}
}
有沒有人有任何建議,爲什麼這可能不工作?
感謝這個JayC。只有一個圖像出現在瀏覽器中的問題仍然存在,但是當我逐步瀏覽Chrome中的代碼時,所有3個圖像都像我期望的那樣出現,而不是正常運行。 – Dashwall 2013-04-11 14:34:27
爲什麼我們要爲這三個圖像發出完全相同的'drawImage'命令,是否有任何理由?圖紙應該是連續的,但延遲?我在這裏錯過了一些東西。 – JayC 2013-04-11 16:36:00
是的,實際上這是正確的答案,所有缺少的是在即時執行函數中傳遞我需要的變量。所以在我的情況下,它是需要在兩個括號內的context2和image。十分感謝你的幫助。 – Dashwall 2013-04-12 07:20:45