如何将(完成,处理程序)方法上的Soundcloud API SDK 3.0附加到我的Play功能?

时间:2016-01-08 19:32:18

标签: javascript angularjs api soundcloud

我没有看到如何使用当前版本的SoundCloud JS sdk的on(事件,处理程序)方法的任何答案。

关于如何将其附加到我的播放功能的任何想法?我想让它在当前歌曲结束时播放下一首歌曲。这是我的游戏功能:

  $scope.play = function(id) {
    soundcloud.stream(id).then(function(player) {
      $scope.player = player;
      $scope.player.play();
    });
    $scope.isPlaying = id;
  };

我已经有一个我可以调用的stepForward函数,例如,on(finish, $scope.StepForward());但是没有迹象表明我会把它放在文档中:https://developers.soundcloud.com/docs/api/sdks#streaming

3 个答案:

答案 0 :(得分:1)

我对这个特定的API没有很好的经验,所以这更像是一个评论,但我没有留下业力的业力。它在那些文档中说on(event,handler)是播放器的一个函数,所以我认为你应该能够在设置播放器时设置该事件监听器。尝试在File Promoter List - ARCVAL行之后添加此内容。

if (($('select[name="catDes"]').val() == "Menu Values") || ($('select[name="catDes"]').val() == "File Promoter List")){
    $('.toHide').css("display", "none");
    $('.toShow').css("display", "inline");
} else {
    $('.toHide').css("display", "block");
    $('.toShow').css("display", "none");
}

另外,你不应该在$scope.player.play()中实际调用处理函数,只需传递函数即可在事件发生时调用它。

答案 1 :(得分:0)

我在某人发布的评论中找到了答案:here

问题实际上是关于SDK 2.0,但评论是我对SDK 3.0的问题的答案。

$scope.player.on('finish' function() {
  $scope.stepForward();
  $scope.$apply; // in my case, this updates a variable, $scope.isPlaying, to the DOM
});

我想我习惯这被称为回调而不是处理程序。现在我知道处理程序是一种回调。

答案 2 :(得分:-1)

我使用以下代码,它位于函数loadAndUpdate:

player.addEventListener('ended', function () {

    var nextCount = 1;
    nextTrack(nextCount);

    function nextTrack(nextCount) {
        QueueControl('forward', function () {
            if (typeof playList[playTrack] == 'undefined') {
                writeHistory('player ended ' + nextCount + ': playList[playTrack] == "undefined"');
                nextTrack(nextCount + 1);
            } else {
                loadAndUpdate(playList[playTrack], loader, audioSource, player, cpUpdate);
            }
        });
    }
});

' undefined' check是对我选择的25%文件的CORS问题的修复,所以代码只是ping到列表中的下一个轨道。它在我的修复列表中......