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

Javascript 如何每1-3秒调用一个函数?,javascript,Javascript,我的目标是用画布写一个小游戏,任务之一是每1-3秒创建一个进入场景的“bug”对象。我确实尝试过setTimeOut、setInterval之类的函数,但都做不好。这是我的尝试 bugs =[]; function addBug(){ var bug = createBug(); bugs.push(bug); } function createRandomNumber(max){ return Math.floor((Math.random()

我的目标是用画布写一个小游戏,任务之一是每1-3秒创建一个进入场景的“bug”对象。我确实尝试过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个。有什么建议吗?提前感谢。

目前,您只需在初始
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;
};

目前,您仅在初始
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;
};

目前,您仅在初始
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;
};

目前,您仅在初始
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;
};


@库帕恩泰,你说得对。对不起,我的大脑放屁了。@JonathanM,但是有人把它改了:)@CupawnTae,哈哈!一直愚弄一些人。:)@库帕恩泰,你说得对。对不起,我的大脑放屁了。@JonathanM,但是有人把它改了:)@CupawnTae,哈哈!一直愚弄一些人。:)@库帕恩泰,你说得对。对不起,我的大脑放屁了。@JonathanM,但是有人把它改了:)@CupawnTae,哈哈!一直愚弄一些人。:)@库帕恩泰,你说得对。对不起,我的大脑放屁了。@JonathanM,但是有人把它改了:)@CupawnTae,哈哈!一直愚弄一些人。:)是的,设置超时对我来说也是一个解决方案。拼写?迈克只是hurrying@sbedulin很明显,但这似乎不是不指出的理由。如果Mike也在更新,我会自己编辑它,但不想与之冲突。@Mike Brant感谢您的帮助,它似乎在大部分情况下都能工作,但是有时它会同时产生多个bug,我们能避免这种情况吗,每1-3天只允许一个bug进入场景?@user97919这里没有任何东西会导致您同时产生多个bug(即同时创建)。是的,setTimeout似乎也是我的解决方案。拼写?迈克只是hurrying@sbedulin很明显,但这似乎不是不指出的理由。如果Mike也在更新,我会自己编辑它,但不想与之冲突。@Mike Brant感谢您的帮助,它似乎在大部分情况下都能工作,但是有时它会同时产生多个bug,我们能避免这种情况吗,每1-3天只允许一个bug进入场景?@user97919这里没有任何东西会导致您同时产生多个bug(即同时创建)。是的,setTimeout似乎也是我的解决方案。拼写?迈克只是hurrying@sbedulin很明显,但这似乎不是不指出的理由。如果Mike也在更新,我会自己编辑它,但不想与之冲突。@Mike Brant感谢您的帮助,它似乎在大部分情况下都能工作,但是有时它会同时产生多个bug,我们能避免这种情况吗,每1-3天只允许一个bug进入场景?@user97919这里没有任何东西会导致您同时产生多个bug(即同时创建)。是的,setTimeout似乎也是我的解决方案。拼写?迈克只是hurrying@sbedulin很明显,但这似乎不是不指出的理由。如果Mike也在更新,我会自己编辑它,但不想与之冲突。@Mike Brant感谢您的帮助,它似乎在大部分情况下都能工作,但是有时它会同时产生多个bug,我们能避免这种情况吗,每1-3天只允许一个bug进入场景?@user97919这里没有任何东西会导致您同时产生多个bug(即同时创建)。