2016-01-16 58 views
0

使用Soundcloud JavaScript SDK我已經成功地抓住了我的音軌並播放它們。我的目標是通過點擊一個按鈕(如播放/暫停切換)來允許播放和暫停。但是,我的問題是,當我點擊.SCBTN元素時,歌曲播放並且不停止。我的條件似乎是正確的,因爲我可以看到真實和錯誤使其進入控制檯。不太清楚爲什麼SC.sound.pause();不工作。Soundcloud Javascript SDK聲音不暫停

var is_playing = false; 
var trackCont = function(trackNum){ 
SC.stream("/tracks/" + trackNum).then(function(sound){ 
    SC.sound = sound; 
    if (is_playing === false){ 
     SC.sound.play(); 
     is_playing = true; 
     console.log(is_playing); 
    }else if(is_playing === true){ 
     SC.sound.pause(); 
     is_playing = false; 
     console.log(is_playing); 
    } 
    }); 
} 
$('body').on("click", ".SCbtn", function(){ 
    var theTrack = $(this).attr('id'); 
    trackCont(theTrack); 
}); 

更新

My Fiddle

回答

0

我覺得你過於複雜的事情。這裏有一個簡單的例子:

HTML:

<script src="https://connect.soundcloud.com/sdk/sdk-3.0.0.js"></script> 
<button id="play">Play</button> 

的JavaScript:

SC.initialize({ 
    client_id: 'XXXX' 
}); 

var myPlayer; 
var isPaused = false; 
SC.stream('tracks/43377447').then(function(player){ 
      player.play() 
      myPlayer = player; 
     }); 

document.querySelector('button').addEventListener('click', function() { 
    if (isPaused) { 
     myPlayer.play() 
     isPaused = false; 
    } else { 
     myPlayer.pause() 
     isPaused = true; 
    } 
}); 

Working JSFiddle.

+0

謝謝JAL!我喜歡你的答案,但它只適用於一個曲目。我的目標是能夠讓我所有的10首曲目可以播放和暫停。這就是爲什麼我上面的代碼傳遞一個軌道號碼到trackCont函數來動態更新流。我在上面添加了一個小提琴,鏈接到一半的代碼。我能夠讓我的曲目播放,但不能暫停。還有一個奇怪的行爲,你必須在播放之前點擊每個音軌兩次。 –

0

您應該使用的SoundCloud爲最簡單的實現提供的切換()方法。在這裏看到:https://developers.soundcloud.com/docs/api/html5-widget

喜歡的東西下面應該做的伎倆:

var sc = SC.Widget(iframe); 

$('body').on("click", ".SCbtn", function(){ 
    sc.toggle(); 
}); 
+0

謝謝艾略特!看看你的鏈接,這是特別爲小部件。我試圖從頭開始構建一些東西,這樣我就可以更好地控制播放器的外觀。 –

+0

@RobM,這正是小部件。基本上你所做的就是創建一個iframe來加載聲音。我的設置爲'display:none',因此它不顯示任何內容。然後,無論您想要如何構建您的播放器,並附加您想要的任何方法 - .toggle().play().pause()。 seek()等等......你可以將聲音加載到你的隱形iframe中,這個soundcloud可以處理和播放,但是所有的控件都在你的自定義播放器中 –

+0

啊!這太有趣了。我完全沒有建立這種聯繫,但它是有道理的。我會在今晚嘗試你的方法。感謝您提供更多細節。 –