編集:SoundManagerインラインボタンプレーヤーを操作するアプローチ
mp3-player-button.js
の下の setup params でconfig
、playNext : true|false
is が見つかった場所 (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({...
})
}
});