繁体   English   中英

JS setTimeout()不起作用

[英]Js setTimeout() isn't working

我正在做一个蛇形游戏,您可能会从我之前的问题中得知。 我只是在做这样的数组:

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

然后在for循环中:

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();

您似乎从未修改过xCoordyCoord 同样,您的“间隔”只是增加一个数字,实际上没有做任何其他事情。 您需要具有某种“重绘”功能来移动蛇。 另外,您正在将snakeXsnakeY创建为数组,但是仅使用过snakeX[0]snakeY[i] -实际上,您甚至没有使用i迭代器。

总体而言,您的代码看起来有些麻烦。 也许您的项目对于您当前的技能水平来说有点雄心勃勃,并且在尝试之前,您应该先掌握一些基础知识。 我并不是想这样说来劝阻您,我只是想提供一些建议。

如果希望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);
  }
}

并让循环在增加全局变量以增加循环数的时间间隔内执行,我只是真的不明白为什么要这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM