2013-02-01 83 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增加全局变量以增加循环次数的时间间隔,我只是不明白为什么要这样做。