如何将Soundcloud API SDK 3.0 on(finish,handler)方法附加到我的Play函数



关于如何在当前版本的SoundCloud JS sdk中使用on(event,handler)方法,我看不到任何答案。

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

  $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

我对这个特定的API没有很好的经验,所以这更多的是一个评论,但我没有留下一个的因果报应。在这些文档中,on(event,handler)是播放器的一个函数,所以我认为在设置播放器时应该能够设置事件侦听器。请尝试将其添加到$scope.player.play()行之后。

$scope.player.on('finished', $scope.StepForward);

此外,您实际上不应该调用.on()中的处理程序函数,您只需要传递该函数,当事件发生时就会调用它。

我在有人在这里发布的评论中找到了答案:这里是

这个问题实际上是关于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
});

我想我已经习惯了把它称为回调而不是处理程序。现在我知道处理程序是一种回调。

我使用以下代码,这些代码位于函数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);
            }
        });
    }
});

"未定义"检查是对CORS问题的修复,我选择了25%的文件,所以代码只是ping到列表中的下一个曲目。它在我的修复列表中。。。

最新更新