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