关于如何在当前版本的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到列表中的下一个曲目。它在我的修复列表中。。。