我見過不同的網絡應用程序,如Playmoss,Whyd和Songdrop等,我相信,要利用Soundcloud Embedded Widget爲了產生演奏多個音軌的功能,不是在一組/(播放列表)之外。目前,我有再現具有下列庫此功能的問題,所以我決定嘗試寫我自己:Javascript&Soundcloud小工具:如何加載新的軌道到SC小工具iFrame(通過URL)
https://github.com/eric-robinson/SCLPlayer
我是很新的編寫JavaScript,但我下面的代碼,將加載第一軌道,一旦擊中「準備好」的綁定就可以播放它。一旦擊中「完成」綁定,它將跳轉到loadNextTrack()函數並將下一個軌道URL加載到小部件的iFrame的src中。之後,它不會擊中原來的「ready」綁定,然後開始播放。
因此,要清除的東西,回放不開始第二軌道。
<script type = "text/javascript">
var SCLPlayer = {
isPlayerLoaded : false,
isPlayerFullLoaded : false,
needsFirstTrackSkip : true,
isPaused: true,
scPlayer : function() {
widgetContainer = document.getElementById('sc');
widget = SC.Widget(widgetContainer);
return widget;
},
loadNextTrack : function() {
var ifr = document.getElementById('sc');
ifr.src = 'http://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/231758952';
console.log ('Loading Next Track');
SCLPlayer.scPlayer().bind(SC.Widget.Events.READY, function() {
console.log ('Player is Ready, next Track');
SCLPlayer.scPlayer().play();
});
}
};
$('#sc').ready(function() {
SCLPlayer.scPlayer().bind(SC.Widget.Events.READY, function() {
SCLPlayer.isPlayerLoaded = true;
//window.location = 'sclplayer://didLoad';
console.log ('Player is Ready');
SCLPlayer.scPlayer().play();
});
SCLPlayer.scPlayer().bind(SC.Widget.Events.PLAY, function() {
SCLPlayer.isPaused = false;
//window.location = 'sclplayer://didPlay';
console.log ('Player did Play');
});
SCLPlayer.scPlayer().bind(SC.Widget.Events.PAUSE, function() {
SCLPlayer.isPaused = true;
//window.location = 'sclplayer://didPause';
console.log ('Player did Pause');
});
SCLPlayer.scPlayer().bind(SC.Widget.Events.FINISH, function() {
SCLPlayer.isPaused = true;
//window.location = 'sclplayer://didFinish';
console.log ('Player did Finish');
SCLPlayer.loadNextTrack();
});
});
</script>
</head>
<body>
<iframe id = "sc" width="100%" height="100%" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/226183306"></iframe>
</body>
我整點寫這個JavaScript是這樣我就可以使用一個斯威夫特爲Javascript橋在我的iOS應用,然後控制軌道裝載到嵌入式播放。出於某種原因,在連接速度較慢的情況下,下一首曲目並不總是使用「橋」加載到播放器中。我希望在currentTrack完成之前將nextTrackURL提供給javascript方面,這樣橋就不會傳遞任何信息,並且Javascript僅處理新的軌道加載。
好的,謝謝你的加載功能,這工作!它加載下一個音軌,現在我唯一遇到的問題是之前添加的事件監聽器在下一個音軌加載後沒有被調用。我的loadNextTrack函數包含您在上面提供的代碼。 –
即使我被困在同一點....你能解決這個問題嗎? – ghetal