我正在制作一个小游戏,我想制作一些每隔3秒改变一次x位置的点。我的问题是它只打印出第一个值。 我试图让它变得尽可能简单。
我尝试了console.log(i),并认为循环工作正常,但randomX var不会改变多次。
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);
答案 0 :(得分:2)
你有什么作品。它看起来只是因为您放置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();
&#13;
如果您想对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();
&#13;
在游戏中,您通常会有一个主游戏循环,负责触发所有基于时间的事物并做出总体决策。