我使用Soundmanager2的mp3播放器按钮在我的网站上播放mp3链接。我在播放当前的mp3时使用了以下修改来预加载下一个mp3。
play: function() {
sm.load('basicMP3Sound'+(1*this._data.oLink.title)+1);
//mycode end
pl.removeClass(this._data.oLink,this._data.className);
this._data.className = pl.css.sPlaying;
pl.addClass(this._data.oLink,this._data.className);
},
在上面的示例中,您可能会注意到 this._data.oLink.title 中的标题标记,我将其添加到mp3链接以便以简单的方式处理文件,例如:
<a href="/quran/assets/audio/Menshawi_16kbps/002001.mp3" class="sm2_button" title="0">/002001.mp3</a>
但是,我注意到在播放当前mp3时没有预加载下一个mp3链接。这是因为下一首mp3没有被连续播放或者在播放完之前的mp3后开始播放。换句话说,下载需要一些时间或延迟。
我的代码中有什么问题吗?或者你的建议是什么?
注意此mp3图层的生活演示是found in this link
答案 0 :(得分:2)
编辑:使用SoundManager inline button player
的方法在mp3-player-button.js
config
下的设置参数playNext : true|false
下,找到...
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
};
...
(第39行),将其更新为如下所示:
this.events
然后,在play
对象(第96行)下面,修改...
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时创建的声音数组中拉出sm
。在这种情况下,SoundManager为id
,因此我们只需将下一首歌的sm.load()
传递给onplay
函数。
这是live demo: http://plnkr.co/edit/mpBkfDIrLNduMAWJjRfN。
<击> 尝试这种方法:
使用createSound
method的onfinish
和firstSound
事件,您可以链接相互委派的系列文件。
明确告诉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({...
})
}
});
:“当你开始播放时,预加载下一个声音,当你完成播放时,播放下一个声音”
{{1}}击>
<击> 撞击>