我正在尝试对Soundcloud Javascript SDK Stream方法使用onfinish事件。我有下面的代码,除了onfinish事件永远不会触发之外,其他都可以正常工作。任何想法都将非常有帮助。
var soundPlayer;
var smOptions = {
useHTML5Audio: true,
preferFlash: false,
onfinish: function() {
console.log('Finished playing');
}
};
SC.initialize({
client_id: "..."
});
SC.stream("/tracks/12345", smOptions, function(sound) {
soundPlayer = sound;
});
提前致谢!
更新:
由于onfinish不起作用,因此我在SC.stream()中返回的soundPlayer对象上使用getState()方法。值得庆幸的是,流完成后,有一个唯一的状态称为“结束”。这是我已经实现的:
setInterval(function() {
if (soundPlayer != null && soundPlayer.getState() == "ended") {
soundPlayer.play();
}
}, 250);
我对此并不满意,但是它给了我经验丰富的需求并符合要求。我真的希望有人可以帮助您阐明为何未记录的onfinish方法。
有人有主意吗?
最佳答案
这是使用回调而不是轮询的解决方法。它通过定位动态html5音频播放器元素本身并注册 native 事件来工作。我不希望它在后备模式下工作,但是强制使用html5可能会完成解决方案,直到SDK v2返回声音对象为止。
var soundPlayer;
var smOptions = {
useHTML5Audio: true,
preferFlash: false
};
SC.initialize({
client_id: "..."
});
SC.stream("/tracks/12345", smOptions, function(sound) {
soundPlayer = sound;
html5Audio = sound._player._html5Audio;
html5Audio.addEventListener('ended', function(){ console.log('event fired: ended'); });
});
关于javascript - Soundcloud Javascript SDK 2.0-流onfinish事件不执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31010292/