繁体   English   中英

发出哔声的Javascript时间

[英]Javascript Timing for playing beeps

我正在构建一个将以HTML5 / Javascript格式播放声音的网格,从本质上讲,我希望它通过循环不断重复播放,因此我设置了:

window.setInterval(playMusic,INTERVAL);

到目前为止,这一切都很好,但是当我尝试在每列上添加setTimeout事件时,它是可行的:

  function playMusic(){
    for(var i=0;i<GRID_SIZE;i++){
      setTimeout(playCol(i),INTERVAL/GRID_SIZE*i);
    }
  }

我这样做的原因是,它将使声音从左到右依次播放。 在开发人员控制台中,我可以看到各个计时器事件在正确的时间触发,但是声音没有被播放。 然后,在间隔结束时,所有声音将同时播放。 因此,对于为什么每个蜂鸣声都不像我希望的那样连续播放,我有些不了解。 setInterval会从每次超时运行到间隔结束都停止代码吗? 如果是这样,是否有一些解决方法,我可以在适当的时间发出哔哔声?

您可以将playMusic设为递归函数,使计数器不在外面:

var i = 0;

function playMusic(){
    if( i < GRID_SIZE ){
        playCol(i);
        i++;
        setTimeout( playMusic, INTERVAL/GRID_SIZE );
    }
}

这样,playMusic()函数将继续调用自身,直到if条件为false为止。 i变量已更新,将用于为playCol函数选择不同的声音。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM