用buzz.js播放一个又一个的声音

我正在试图把标题buzz.js一个接一个地播放buzz.js声音对象。 我已经尝试过使用events - endedcallback,但是这对于大量的文件变得严格。 我以为我可以创build我的声音列表,遍历它们并调用绑定一次,但没有工作,因为迭代不等待callback完成。 我正在使用node.js

这是我迄今为止:

  var mySound1 = new buzz.sound("/sound/001000.mp3"); var mySound2 = new buzz.sound('/sound/001001.mp3'); var mySound3 = new buzz.sound('/sound/001002.mp3'); for (var i = 0, max = 3; i < max; i++) { var sPath = '/sound/001' + soundArray[i].value + '.mp3'; var sound1 = new buzz.sound(sPath); sound1.play().bind('ended', function(e){ //here i want sound1 to finish before sound2 plays and so forth }); } 

我怎么能等到sound1在sound2开始dynamic播放之前完成呢?

可能不是最优雅的解决scheme,buzz允许您定义您可以使用的组而不是数组,但是:

尝试将所有要播放的文件添加到数组中,然后循环所有数组,将结束事件绑定到每个触发下一首歌曲的元素。

一个非常简单的例子:

 var files = [new buzz.sound('audio1.mp3'), new buzz.sound('audio2.mp3'), new buzz.sound('audio3.mp3')]; files.forEach(function(element, index) { element.bind('ended', function(e) { // when current file ends files[index+1].play(); // trigger the next file to play }); }) files[0].play(); // start the first file that triggers the rest 
Interesting Posts