2013-02-01 103 views
0

我正在製作一款蛇遊戲,因爲您可能已經從看到我以前的問題中知道。我下面了只是在做一個數組是這樣的:Js setTimeout()不起作用

var snakeX = new Array(); 
var snakeY = new Array(); 

,然後在一個循環:

for (var i = 0;i<=num;i++) { 

    snakeX[0] = xCoord; 

    snakeY[0] = yCoord; 

    context.fillRect(snakeX[0], snakeY[0], sH, sW); 

    xCoord = xCoord + 11; 

    console.log('xCoord = ' + xCoord + ', yCoord = ' + yCoord); 

} 

和兩個xCoordyCoord瓦爾設置爲0

我的問題是爲什麼這不工作?

setInterval(function() { 

    num++; 

}, 1000); 

這裏是我的一切:

function snake() { 

    //Let's make the snake start at 4 squares wide, and 1 square tall 

    function createSnake() { 

     var xCoord = 0; 

     var yCoord = 0; 

     var snakeX = new Array(); 

     var snakeY = new Array(); 

     var num = 3; 

     setInterval(function() { 

      num = num + 1; 

     }, 1000); 

     for (var i = 0;i<=num;i++) { 

      snakeX[0] = xCoord; 

      snakeY[0] = yCoord; 

      context.fillRect(snakeX[0], snakeY[0], sH, sW); 

      xCoord = xCoord + 11; 

      console.log('xCoord = ' + xCoord + ', yCoord = ' + yCoord); 

     } 
    } 
    createSnake(); 

} 

snake(); 
+0

'我<= num'應該是'我 0x499602D2

+2

你認爲傳給間隔定時器的函數會做什麼?它只是增加了這個變量,但它沒有做任何事情來繪製更多的蛇。 – Pointy

+0

你的預期行爲是什麼? – ggbranch

回答

0

你似乎從來沒有被修改xCoordyCoord。同樣,你的「間隔」只是增加一個數字,實際上並沒有做其他事情。你需要有一種「重繪」功能來移動蛇。另外,您正在創建snakeX和​​作爲數組,但只使用snakeX[0]snakeY[i] - 事實上,您甚至沒有使用迭代器i。總的來說,它看起來像你的代碼有點火車殘骸。也許你的項目對於你目前的技能水平有點雄心勃勃,在你嘗試這個之前你應該多做一些基礎知識。我不是在試圖勸阻你說這個,我只是想提供一些建議。

+0

我正在通過做'xCoord = xCoord + 11;'來修改xCoord,而且我是積極的可以做到這一點。我對此寄予厚望。它在內部看起來可能不太好,但在外面它看起來不錯,而這正是我現在所關心的。 – Bryce

+0

而且我不需要改變yCoord,因爲現在我只想讓所有的廣場都在最前面。 – Bryce

0

如果你想在for循環,以獲得更長的每一秒,你可以創建一個間隔會增加一個全局變量每一秒,然後引用全局變量在for循環如下:

var num = 0; 
var interval = setInterval(function() { 
    num++; 
} 

function spin() { 
    for(var i = 0; i < num; i++) { 
    console.log(num); 
    } 
} 

的問題是,對於上面的代碼真的做任何事情,你需要繼續呼叫spin(),並且需要更長的時間,您需要知道間隔已經過去,因此您可以執行以下操作:

var num = 0; 
var interval = setInterval(function() { 
    num++; 
    for(var i = 0; i < num; i++) { 
    console.log(num); 
    } 
} 

並讓循環執行我n增加全局變量以增加循環次數的時間間隔,我只是不明白爲什麼要這樣做。