编辑:使用SoundManager 内联按钮播放器的方法
在下面的设置参数中,mp3-player-button.js
在config
哪里playNext : true|false
找到(第 39 行),将其更新为如下所示:
...
this.config = {
// configuration options
playNext: true, // stop after one sound, or play through list until end
autoPlay: false, // start playing the first sound right away
preloadNext : true // preload next sound when previous sound starts to play
};
...
然后,在this.events
对象下方(第 96 行),修改play
函数以预加载下一个声音:
...
this.events = {
// handlers for sound events as they're started/stopped/played
play: function() {
pl.removeClass(this._data.oLink,this._data.className);
this._data.className = pl.css.sPlaying;
pl.addClass(this._data.oLink,this._data.className);
if (pl.config.preloadNext) {
var nextLink = (pl.indexByURL[this._data.oLink.id]+1);
if (nextLink<pl.links.length) {
sm.load(nextLink)
}
}
},
...
总之,当一首歌曲开始时,我们检查是否有下一首歌曲;如果有,我们id
从实例化 SoundManager 时创建的声音数组中提取它。在这种情况下, SoundManager 是sm
,所以我们只需将id
下一首歌曲的 传递给sm.load()
函数。
这是一个现场演示:http://plnkr.co/edit/mpBkfDIrLNduMAWJjRfN。
试试这个方法:
使用方法onplay
的和onfinish
事件,您可以链接一系列相互委托的文件。createSound
明确告诉firstSound
:“当你开始播放时,预加载下一个声音,当你完成播放时,播放下一个声音”
JavaScript
var firstSound = soundManager.createSound({
id: 'firstSound',
url: 'path/to/your/firstSound.mp3'
});
var secondSound = soundManager.createSound({
id: 'secondSound',
url: 'path/to/your/secondSound.mp3'
});
// Kickoff first sound
firstSound.load();
// Define the chain of events
firstSound.play({
onplay: function () {
// When `firstSound` starts, preload `secondSound`
secondSound.load();
},
onfinish: function () {
// Repeat, with next sound
secondSound.play({...
})
}
});