Javascript 如何在soundmanager2中逐个启动声音
如何在soundmanager2中一个接一个地启动声音,我的意思是当第一个声音结束时,第二个声音开始,第二个声音结束时,第三个声音开始等等。中有一个示例说明了如何执行此操作(请参见演示4a)。Javascript 如何在soundmanager2中逐个启动声音,javascript,jquery,soundmanager2,Javascript,Jquery,Soundmanager2,如何在soundmanager2中一个接一个地启动声音,我的意思是当第一个声音结束时,第二个声音开始,第二个声音结束时,第三个声音开始等等。中有一个示例说明了如何执行此操作(请参见演示4a)。play方法将对象作为参数。该对象包含一组选项。其中一个选项是onfinish回调函数: soundManager.play('firstSound',{ multiShotEvents: true, onfinish:function() { soundManager.pl
play
方法将对象作为参数。该对象包含一组选项。其中一个选项是onfinish
回调函数:
soundManager.play('firstSound',{
multiShotEvents: true,
onfinish:function() {
soundManager.play('secondSound');
}
});
multiShotEvents
选项必须设置为true
,以使onfinish
事件在每个声音完成时触发。默认情况下,它只会在声音结束后触发
你可以用这种方式把任意多的声音排成一列。我花了3个小时才弄明白。。但这是:
soundManager.play('sound1',{
multiShotEvents: true,
onfinish:function() {
soundManager.play('sound2',{
multiShotEvents: true,
onfinish:function() {
soundManager.play('sound3');
}
});
}
});
使用递归,唯一的问题可能会出现,当在数组中放置相同的声音两次时(链为无穷大)除了Ashot的答案和所有其他答案之外,您可以在创建声音时设置onfinish函数,而不仅仅是在播放声音时,例如:
var demo2Sound = soundManager.createSound({
url: '../mpc/audio/CHINA_1.mp3',
onfinish: function() {
soundManager._writeDebug(this.id + ' finished playing');
}
});
…如果您需要在声音播放后更改onfinish函数,您可以这样做:
demo2Sound._onfinish = function(){
//now this function will override the previous handler
};
如何处理10首歌曲或2首以上的歌曲?-1如果不遵循DRY原则,则应使用递归队列函数(请参阅for方法)。值得注意的是,它属于
createSound()
。
demo2Sound._onfinish = function(){
//now this function will override the previous handler
};