如何每1-3秒调用一次函数?

时间:2015-06-15 21:46:26

标签: javascript

我的目标是使用画布编写迷你游戏,其中一项任务是创建“bug”对象,每隔1-3秒进入一次场景。我尝试过像setTimeOut,setInterval这样的函数,但我无法正确使用它。这是我的尝试

  bugs =[];
  function addBug(){
     var bug = createBug();
     bugs.push(bug);
  }

  function createRandomNumber(max){
     return Math.floor((Math.random() * max) + 1);
  };

  var enterBug = setInterval(addBug,createRandomNumber(10)*1000);

目前我以恒定的速度产卵,但不知道如何将其改为每1-3个。任何建议?提前谢谢。

1 个答案:

答案 0 :(得分:3)

目前,您只需在初始setInterval来电时设置一次费率。您可能需要像这样使用setTimeout:

...
function addBug(){
   ...
   bugTimeout = setTimeout(addBug, createRandomNumber(10)*1000);
}
...
bugTimeout = setTimeout(addBug, createRandomNumber(10)*1000);

如果您想获得更多随机性,您也可以考虑随机数生成。现在,您只能获得精确的第二个值1-10,因为您将乘以1000以在随机生成完成后转换为秒。如果你想要更随意的东西,你可以使用:

function createRandomNumber(maxSeconds){
    minSeconds = 1;
    if (maxSeconds < minSeconds) {
        maxSeconds = minSeconds;
    }
    interval = maxSeconds - minSeconds;
    return (Math.floor(Math.random() * interval) + minSeconds) * 1000;
};

当设置超时时,你当然不需要再乘以1000。

bugTimeout = setTimeout(addBug, createRandomNumber(10))