Soundcloud Javascript SDK 2.0-未执行流onfinish事件
我正在尝试对Soundcloud Javascript SDK流方法使用onfinish事件。除了onfinish事件never激发外,我有以下代码正在工作。任何想法都会很有帮助Soundcloud Javascript SDK 2.0-未执行流onfinish事件,javascript,soundcloud,Javascript,Soundcloud,我正在尝试对Soundcloud Javascript SDK流方法使用onfinish事件。除了onfinish事件never激发外,我有以下代码正在工作。任何想法都会很有帮助 var soundPlayer; var smOptions = { useHTML5Audio: true, preferFlash: false, onfinish: function() { console.log('Finished playing'); } };
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方法没有触发
有人有什么想法吗?我也有同样的问题,我似乎无法启动任何回调。这里有一个简单的例子,除了回调之外。(这应该是一个评论,而不是一个回答,但我没有这样的名声。)
声音云API回调测试
SC.initialize({
客户id:“您的客户id”
});
SC.stream(
“/tracks/293”,
{
onload:function(){console.log(“不激发”);},
onplay:function(){console.log(“不开火”);},
onfinish:function(){console.log(“不激发”);}
},
函数(声音){sound.play();});
这里有一个解决方法,使用回调而不是轮询。它的工作原理是以动态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'); });
});
这与SDK版本3完美配合
SC.stream('/tracks/293', function(player) {
player.on('finish', function() {
stopPlayer();
});
});
感谢您发布此消息,很高兴知道我没有发疯。:)希望我们能从Soundcloud团队或熟悉此问题的人那里了解到这一点。我似乎找不到其他人有这个问题。我在SO上看到的所有代码都使用了onfinish,因为我已经实现了它。祝你好运!我至少可以证实,如果你疯了,我也疯了!感谢您发布该解决方案。希望我们不会永远需要它,但很高兴知道它在那里。谢谢,效果很好。你知道为什么stream方法不会像文档中说的那样在回调中返回声音对象吗?没问题。我没有关于SDK的更多信息,但是如果我了解更多,我会更新这个线程。如果你愿意,也可以这样做。这对SDK 2有效,但自从SDK 3发布(10月15日)以来,它就不再有效了。有什么想法吗?3版SDK不返回承诺对象吗?我认为这个解决方案行不通。我已经测试了3.1.2版,并且从未触发回调<代码>。然后使用(fn)。
SC.stream('/tracks/293', function(player) {
player.on('finish', function() {
stopPlayer();
});
});