Soundcloud API完成事件时如何使用

Soundcloud API How do I use on finish event

本文关键字:何使用 事件 API Soundcloud      更新时间:2024-02-05

什么是Soundcloud API流完成事件的正确用法。我可以解析URL,启动流,并检测歌曲何时结束,但在第一首歌曲结束后,下一个流将添加到第一个流对象中。在我的示例中播放第一首歌曲后,单击停止会导致console.log("StopClicked:"Stream.ID)也为以前的流启动。

如何退出Track功能,让新歌开始,而不是在流上开始新歌流?

链接到以下代码的代码笔

SC.initialize({
    client_id: '72e56a72d70b611ec8bcab7b2faf1015'
});
$(document).ready(function() {
    var urlid = ["https://soundcloud.com/sheckylovejoy/sad-trombone", "https://soundcloud.com/xcollective/x002"];
    $.get(
        'https://api.soundcloud.com/resolve.json?url=' + urlid[0] + '&client_id=72e56a72d70b611ec8bcab7b2faf1015', 
         function (result) {
             $(document).trigger('Rotation/currentTrack', result);
             return result;
         });
    $(document).on('Track/finish', function(result){
        $.get(
            'https://api.soundcloud.com/resolve.json?url=' + urlid[1] + '&client_id=72e56a72d70b611ec8bcab7b2faf1015', 
            function (result) {
                $(document).trigger('Rotation/currentTrack', result);
                console.log("Song 2 " + result.id);
                return result;
            });       
        });        
    });
    $(document).on('Rotation/currentTrack', function( e, results){
        console.log("results " + results.id + " " + results.title);
        track(e, results.id);
    });
    function track(e, trackNum){
    SC.stream('/tracks/' + trackNum).then(function(sound) {
        sound.play();
        $('#start').click(function(e) {
            e.preventDefault();
            console.log("START Clicked")
            sound.play();
            sound.on('finish', function(){
                console.log("The track finished");
                $(document).trigger('Track/finish', sound);
            });
        });
    $('#stop').click(function(e) {
        e.preventDefault();
        console.log("Stop clicked: " + trackNum)
        sound.pause();
    });
    $('#skip').click(function(e){
        e.preventDefault();
        sound.seek(170000);
    });
  })
}

问题是,在SC中添加了多个流之后,我正在调用声音上的方法。我发现我可以将每个声音存储到一个数组中,然后在数组中相应的声音上调用方法。此外,在SC对象上存储声音允许在track()之外调用这些方法。