[英]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);
}
并且xCoord
和yCoord
变量都设置为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();
您似乎从未修改过xCoord
和yCoord
。 同样,您的“间隔”只是增加一个数字,实际上没有做任何其他事情。 您需要具有某种“重绘”功能来移动蛇。 另外,您正在将snakeX
和snakeY
创建为数组,但是仅使用过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.