等待一个声音播放下一个声音

问题描述:

您好我已经建立了移相器的应用程序,并要创建两个声音的序列之前停止:等待一个声音播放下一个声音

  1. “你”(加载和audioSound [0存储])
  2. “完成”(同上,audioSound [1])

然后我就可以继续再使用1并在2不同的单词/句子要做到这一点,我需要的声音在顺序播放。

在使用的瞬间:

audioSound[0].play(); 

audioSound[1].play(); 

othercode... 

剧目在同一时间。有关如何让声音按顺序播放的任何想法,只有在第二个完成后才会继续播放othercode...

提前致谢!

编辑:@ Julian的回答后 嗨 - 要清楚我有以下代码将项目弹出到队列中,然后播放它们。虽然队列中的项目按顺序播放,但队列播放事件之后的函数/代码与声音并行执行,而不是在声音完成时执行。

function playSequence(soundArray) { 
    soundArray[0].play(); 
    soundArray.forEach(function(element, index, array) { 
     if (soundArray[index + 1]) { 
      soundArray[index].onStop.addOnce(function() { 
       soundArray[index + 1].play(); 
       }, this); 
      } 
     }); 
+0

使用媒体活动https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events –

+1

我还没说完理解你的问题, 我的朋友。你想按顺序播放两个声音(你玩一个,一旦你完成了游戏,然后第二个玩),并且是无限的?你还谈论了继续使用不同的代码,这是否意味着? –

+0

嘿,谢谢你们两位。 @ Julian - 我想让声音依次播放。目前发生的情况是,与声音2同时发生1次播放,然后两个代码开始执行。理想情况下,我希望在播放其他代码之前依次播放声音。那有意义吗? – user7289

你可以试试这个:

function preload() { 

    game.load.audio('sound-explosion', 'explosion.wav'); 
    game.load.audio('sound-lose', 'lose.mp3'); 

} 

var soundlose; 
var soundexplosion; 

function create() { 
    //Add sounds 
    soundexplosion = game.add.audio('sound-explosion'); 
    soundlose = game.add.audio('sound-lose'); 

    //Prepare the next event once the sound finishes playing 
    soundexplosion.onStop.addOnce(function() { soundlose.play(); }, this); 
    soundlose.onStop.addOnce(function() { console.log('Hello!'); }, this) 

    //Play sound... 
    soundexplosion.play(); 

    ... 
} 
+0

谢谢@Julian - 一旦我这样做,音频就会按顺序播放,但代码的执行与音频播放并行继续进行 - 如何让代码的执行等到音频​​结束? (见上面编辑过的q) – user7289

+0

哇!如果你想在事件之后执行代码,尝试将onStop放在数组的最后一个元素中:'soundArray [soundArray.length - 1] .onStop ...' –