簡體   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