的jsfiddle(注:它不會顯示任何東西,它只是一個讓我展示我的代碼在一個整齊的格式方式)http://jsfiddle.net/h6tVR/奇蟲與HTML5畫布的drawImage
我是新來的HTML5的畫布,並已決定玩一下,看看我能用它做什麼。到目前爲止,我已經能夠得出一個本地託管圖像到畫布上,甚至做一些基本的平鋪:
window.onload = function(){
var GameClosure = function() {
var canv = document.getElementById("canv");
var canvContext = canv.getContext("2d");
var sprite = new Image();
sprite.src = "sprite.png"
var tile = new Image();
tile.src = "tile.png"
function loadSprite(){
sprite.onload = function(){
canvContext.drawImage(sprite, 50, 50);
};
}
function loadTiles(){
tile.onload = function(){
for(var i = 0; i < 800; i += 16){
for(var r = 0; r < 608; r += 16){
canvContext.drawImage(tile, i, r);
}
}
};
}
return{
loadTiles: loadTiles,
loadSprite: loadSprite
};
}();
GameClosure.loadTiles();
GameClosure.loadSprite();
}
我得到一個奇怪的問題與此有關。當我加載時,大多數時候,只有瓷磚會加載。到目前爲止,我已嘗試了幾件事情,我已調用GameClosure.loadTiles() and GameClosure.loadSprite();
調用以查看加載順序是否有所不同。它沒有。我甚至嘗試創建第二個上下文並將tile分配給一個,將精靈分配給另一個,但這沒有什麼區別。註釋拼貼會正確生成拼圖。
它變得更加奇特。我很快刷新了頁面,偶爾會發現(沒有任何模式,有時會連續發生3次,其他時間發生在20次之後),瓷磚會加載,並且精靈會像我期望的那樣載入頂部至。
這可以修復嗎?我唯一的猜測是我的代碼有點異步運行,並且在加載完精靈之後創建tile的for循環正在完成,但是看着我的代碼,我沒有看到可能發生的情況。
謝謝。這個解釋幫助我更好地理解我做錯了什麼。我已經改變了我的代碼,現在我已經開始工作了。 – BenM