[英]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.