Mik*_*ike 5 javascript soundcloud
我正在尝试将onfinish事件用于Soundcloud Javascript SDK Stream方法.我有以下代码正在工作,除了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;
});
Run Code Online (Sandbox Code Playgroud)
提前致谢!
更新:
由于onfinish不起作用,我在SC.stream()中返回的soundPlayer对象上使用了getState()方法.值得庆幸的是,当流完成时,有一个名为"已结束"的唯一状态.这是我实施的:
setInterval(function() {
if (soundPlayer != null && soundPlayer.getState() == "ended") {
soundPlayer.play();
}
}, 250);
Run Code Online (Sandbox Code Playgroud)
我对此并不满意,但它给了我经验丰富的期望并满足要求.我真的希望有人可以帮助解释为什么记录的onfinish方法没有解雇.
有人有主意吗?
这是使用回调而不是轮询的解决方法。它的工作原理是针对动态 html5 音频播放器元素本身并注册本机事件。我不希望它在后备模式下工作,但强制 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'); });
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |