我有一個腳本一直告訴我ctx是未定義的,但仍然在腳本中設置了不同的變量,這是在同一個地方創建的......所以我很困惑爲什麼要設置一個變量而不是其他變量。未定義的ctx變量
錯誤是: 未捕獲的ReferenceError:CTX沒有在線路32上所定義(I註釋行32)
然而變種畫布定義=/
這是我的腳本:
var tiles = Array("1.png","0.png");
var loaded = 0;
var loadTimer;
function loadimg(){
var tileImg = new Array();
for(var i=0;i<tiles.length;i++){
tileImg[i] = new Image();
tileImg[i].src = tiles[i];
tileImg[i].onload = function(){
loaded++;
}
}
}
function loadall(){
if(loaded == tiles.length){
clearInterval(loadTimer);
loadTimer = setInterval(gameUpdate,100);
}
}
function gameUpdate(){
ctx.clearRect(0,0,canvas.width,canvas.height); //line 32
draw();
}
function init(){
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
loadimg();
loadTimer = setInterval(loadall,100);
}
希望你能幫助解釋我的錯誤。
嗯,我從解剖另一個腳本得到我的腳本: http://glacialflame.com/tutorials/tiles/02/ 他的腳本在init函數中有ctx,但不會產生相同的未定義錯誤。所以我很困惑。他有什麼不同? – Sir 2012-02-25 23:00:24
該頁面上的腳本不包含** var **關鍵字。在Javascript中,如果你沒有使用** var **定義一個變量,它將被自動聲明爲全局變量(即將它放在代碼的頂部)。 – DNJohnson 2012-02-25 23:09:32
感謝您解釋:)我現在明白了! – Sir 2012-02-25 23:13:38