我如何在soundmanager2中开始一个又一个声音,我的意思是当第一个声音结束时,第二个声音开始,第二个结束时第三个开始等等等等。
问问题
2453 次
4 回答
6
var soundArray = ['sound1', 'sound2', ...];
var chain = function (sound) {
soundManager.play(sound, {
multiShotEvents: true,
onfinish: function () {
var index = soundArray.indexOf(sound);
if (soundArray[index + 1] !== undefined) {
chain(soundArray[index + 1]);
}
}});
};
chain(soundArray[0])
托盘使用递归,唯一的问题可能会发生,当你在数组中放置相同的声音两次(链是无限的)
于 2012-06-06T09:36:02.513 回答
1
我花了 3 个小时才弄清楚.. 但这里是:
soundManager.play('sound1',{
multiShotEvents: true,
onfinish:function() {
soundManager.play('sound2',{
multiShotEvents: true,
onfinish:function() {
soundManager.play('sound3');
}
});
}
});
于 2012-04-07T16:16:36.143 回答
1
除了 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
};
于 2013-10-14T03:33:18.043 回答
1
文档中有一个如何执行此操作的示例(请参阅演示 4a)。该play
方法将对象作为参数。该对象包含一组选项。其中一个选项是onfinish
回调函数:
soundManager.play('firstSound',{
multiShotEvents: true,
onfinish:function() {
soundManager.play('secondSound');
}
});
该multiShotEvents
选项必须设置为true
在onfinish
每个声音完成时触发事件。默认情况下,它只会在声音完成后触发。
你可以用这种方式排队尽可能多的声音。
于 2011-09-24T10:25:01.040 回答