2013-07-14 26 views
5

Javascript ve Soundcloud SDK'ya yeni geliyorum, eğer şu anki çözüm yolun aşağısında ise lütfen nasıl geliştirilebileceğini bana bildirin.Akış için Soundcloud Javascript SDK'sı kullanılarak önceki parça tamamlandıktan sonra otomatik olarak sonraki sese nasıl geçebilirim?

Özel bir Soundcloud oynatıcı oluşturuyorum ve önceden oluşturulmuş bir widget kullanmıyorum. Bir parça bittikten sonra otomatik olarak bir sonraki parçaya geçiyorum. Bir Soundcloud çalma listesi kullanmadan bunu başarmak istiyorum. Bunun yerine çalmak için bir JSON parça listesinde çekeceğim.

Ben oynamak duraklatma, durdurma ve bağlantılarla parçaları atlamak mümkün ama ben iz nextTrack fonksiyonunu tetiklemek için oynarken tamamladığında nasıl söyleyeceğini emin değilim. Baska öneri?

Soundcloud JavaScript SDK Akış API:, şimdi bir işlevle konsol çıkışını değiştirebilirsiniz

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
<script src="http://connect.soundcloud.com/sdk.js"></script> 

<div class="music-player"> 
    <h4 class="trackTitle">Current track</h4> 
    <a href="#" id="play">Play</a> 
    <a href="#" id="pause" style="display:none;">Pause</a> 
    <a href="#" id="stop">Stop</a> 
    <a href="#" id="next">Next</a> 
</div> 

<script> 

    Track = function (trackId){ 
     var currentTrack = ""; 

     SC.initialize({ 
      client_id: "CLIENT_ID" 
     }); 

     SC.stream("http://api.soundcloud.com/tracks/" + trackId, function(sound){ 
      currentTrack = sound; 
     }); 

     this.play = function() { 
      currentTrack.play(); 
     }; 

     this.pause = function() { 
      currentTrack.pause(); 
     }; 

     this.stop = function() { 
      currentTrack.stop(); 
     }; 
    }; 

    Rotation = function(tracks) { 
     var currentTrack = tracks[0]; 

     this.currentTrack = function() { 
      return currentTrack; 
     }; 

     this.nextTrack = function() { 
      var currentIndex = tracks.indexOf(currentTrack); 
      var nextTrackIndex = currentIndex + 1; 
      var nextTrackId = tracks[nextTrackIndex]; 
      currentTrack = nextTrackId; 
      return currentTrack 
     }; 
    }; 

    $(document).ready (function(){ 
     var songs = [{"title":"Sad Trombone","song_url":"https://soundcloud.com/sheckylovejoy/sad- trombone","soundcloud_id":"00"},{"title":"AraabMUZIK - \"Beauty\"","song_url":" https://soundcloud.com/selftitledmag/araabmuzik-beauty","soundcloud_id":"79408289"}] 
     var rotation = new Rotation(songs); 
     var currentTrack = rotation.currentTrack(); 
     var currentPlayingTrack = new Track(currentTrack.soundcloud_id); 

     $('#play').on('click', function(event){ 
      currentPlayingTrack.play(); 
      $('.trackTitle').html(currentTrack.title); 
      $('#pause').show(); 
      $('#play').hide(); 
     }); 

     $('#pause').on('click', function(event){ 
      currentPlayingTrack.pause(); 
      $('#pause').hide(); 
      $('#play').show(); 
     }); 

     $('#stop').on('click', function(event){ 
      currentPlayingTrack.stop(); 
      $('#pause').hide(); 
      $('#play').show(); 
     }); 

     $('#next').on('click', function(event){ 
      currentPlayingTrack.stop(); 
      currentTrack = rotation.nextTrack(); 
      currentPlayingTrack = new Track(currentTrack.soundcloud_id); 
      currentPlayingTrack.play(); 
      $('.trackTitle').html(currentTrack.title); 
     }); 

    }); 

</script> 

cevap

7

Parçanın nesne oluştururken onfinish yöntemi uygulayabilirsiniz: Burada http://developers.soundcloud.com/docs/api/sdks#streaming

benim kodudur . do; -

SC.stream("http://api.soundcloud.com/tracks/" + trackId, {onfinish: function(){ 
    console.log('track finished'); 
}}, function(sound){ 
    currentTrack = sound; 
}); 
+0

Teşekkür BNZ Tam ben "fonksiyonu (ses) {currentTrack = ses}" ne geliyor :) – jmejia

+0

gerekli? –

+0

Bunu denedim, ancak konsol yok ... işe yaramadığından emin değil .. – Francesco

İlgili konular