HTML5 Soundcloud ウィジェット API を使用して、サウンド終了イベントで別の曲にスキップしています。
http://jsbin.com/axuzoj/4/edit
残念ながら、終了イベントに競合状態のバグがあるようです。Soundcloud プレーヤーは、リスト内の次の曲と、finish イベント ハンドラーでスキップされた曲の 2 つの曲を同時に再生することになります。
var widget = null;
$(function() {
var iframe = document.querySelector('#soundcloud_player iframe');
widget = SC.Widget(iframe);
widget.bind(SC.Widget.Events.READY, function() {
widget.bind(SC.Widget.Events.FINISH, function() {
widget.skip(3);
});
});
});
これは既知のバグですか?
サウンドが終了した後に別のトラックにスキップするより良い方法はありますか?
連続再生をオフにする方法はありますか?
終了イベントハンドラーでスキップする前に短い待機を追加すると、問題が回避されます。しかし、良い方法とは思えません。
window.setTimeout(function() { widget.skip(3); }, 300);
もう 1 つの回避策は、FINISH イベントの代わりに PLAY_PROGRESS イベントを使用して、前の曲が終了する直前の曲にスキップすることです。
widget.bind(SC.Widget.Events.READY, function() {
widget.bind(SC.Widget.Events.PLAY_PROGRESS, function(obj) {
if (obj.relativePosition > 0.999) {
widget.pause();
widget.skip(3);
}
});
});