2013-04-14 43 views
2

我正在使用HTML5 Soundcloud小部件API跳到聲音結束事件上的另一首歌曲。使用HTML5 SoundCloud播放器小部件如何以編程方式跳到另一首曲目而不會導致播放第二不需要的曲目?

http://jsbin.com/axuzoj/4/edit

不幸的似乎是在完成事件的競爭條件錯誤。 Soundcloud播放器最終同時播放兩首歌曲:列表中的下一首歌曲以及在完成事件處理程序中跳過的歌曲。

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); 

另一個解決辦法是跳至上一首歌曲結束之前的一首歌,用PLAY_PROGRESS事件,而不是在FINISH事件。

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); 
     } 
    }); 
}); 
+0

嘿,這似乎是一個錯誤,我正在研究它,謝謝你的報告。 –

回答

2

是的,有一個現在已經修復的種族條件錯誤。

+0

我測試了它,現在跳過完成事件。謝謝 –

相關問題