创建一个每隔3秒更改一次变量的函数

时间:2017-11-28 20:10:26

标签: javascript function settimeout var

我正在制作一个小游戏,我想制作一些每隔3秒改变一次x位置的点。我的问题是它只打印出第一个值。 我试图让它变得尽可能简单。

我尝试了console.log(i),并认为循环工作正常,但randomX v​​ar不会改变多次。

var randomX = 0;
var i = 0, spawnXCount = 10;

function makeRandomXPosition(){

	i++;
	if (i < spawnXCount){
		setTimeout(makeRandomXPosition, 3000);
		
	}
	randomX = Math.floor(Math.random()*1000)+1;
}


makeRandomXPosition();
console.log(randomX);

1 个答案:

答案 0 :(得分:2)

你有什么作品。它看起来只是因为您放置console.log()的位置而只执行一次。将其移动到该功能中,您每次都会看到它正在发生变化。

&#13;
&#13;
var randomX = 0;
var i = 0, spawnXCount = 10;

function makeRandomXPosition(){
    i++;
    if (i < spawnXCount){
        setTimeout(makeRandomXPosition, 3000);	
    }
    randomX = Math.floor(Math.random()*1000)+1;
    console.log(randomX);
}


makeRandomXPosition();
&#13;
&#13;
&#13;

如果您想对randomX执行某些操作,您可能需要在计时器上使用其他内容,或者可能更好,请先调用makeRandomXPosition(),然后再执行某些操作。

&#13;
&#13;
var randomX = 0;
var i = 0, spawnXCount = 10;

function makeRandomXPosition(){
    i++;  
    randomX = Math.floor(Math.random()*1000)+1;
}

function doSomething() {
  makeRandomXPosition();
  console.log(randomX); // do something with randomX
  
  if (i < spawnXCount) {
    setTimeout(doSomething, 3000);
  }
}


doSomething();
&#13;
&#13;
&#13;

在游戏中,您通常会有一个主游戏循环,负责触发所有基于时间的事物并做出总体决策。