我正在做一个小游戏,我想做一些点,每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);

最佳答案

您所拥有的作品。看起来只是因为您放置console.log()的位置而只执行一次。将其移至函数中,您会发现它每次都在变化。



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





如果要使用该randomX进行操作,则可能需要在计时器上进行其他操作,或者可能需要更好的方法,使该对象调用makeRandomXPosition(),然后再进行处理。



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





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

10-05 20:34