Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Soundcloud Javascript SDK 2.0-未执行流onfinish事件_Javascript_Soundcloud - Fatal编程技术网

Soundcloud Javascript SDK 2.0-未执行流onfinish事件

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'); } };

我正在尝试对Soundcloud Javascript SDK流方法使用onfinish事件。除了onfinish事件never激发外,我有以下代码正在工作。任何想法都会很有帮助

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();
  });
});