soundcloud - 使用 HTML5 SoundCloud 播放器小部件,如何以编程方式跳到不同的轨道而不导致播放第二个不需要的轨道?

标签 soundcloud

我正在使用 HTML5 Soundcloud 小部件 API 在声音完成事件中跳至另一首歌曲。

http://jsbin.com/axuzoj/4/edit

不幸的是,终点事件中似乎存在竞争条件错误。 Soundcloud 播放器最终会同时播放两首歌曲:列表中的下一首歌曲和在完成事件处理程序中跳到的歌曲。

var widget = null;
$(function() {
    var iframe = document.querySelector('#soundcloud_player iframe');
    widget = SC.Widget(iframe);        
    widget.bind(SC.Widget.Events.READY, function() {
        widget.bind(SC.Widget.Events.FINISH, function() {                
            widget.skip(3);
        });
    });
});

这是一个已知的错误吗?

有没有更好的方法在声音结束后跳到不同的轨道?

有办法关闭连续播放吗?

在完成事件处理程序中跳过之前添加短暂的等待,可以解决该问题。但似乎不是一个好方法。

window.setTimeout(function() { widget.skip(3); }, 300);

另一种解决方法是在上一首歌曲结束之前跳到一首歌曲,使用 PLAY_PROGRESS 事件而不是 FINISH 事件。

widget.bind(SC.Widget.Events.READY, function() {
    widget.bind(SC.Widget.Events.PLAY_PROGRESS, function(obj) {
        if (obj.relativePosition > 0.999) {
            widget.pause();
            widget.skip(3);
        }
    });
});

最佳答案

是的,存在一个竞争条件错误,现已修复。

关于soundcloud - 使用 HTML5 SoundCloud 播放器小部件,如何以编程方式跳到不同的轨道而不导致播放第二个不需要的轨道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16005004/

相关文章:

javascript - 如何使用 Soundcloud Javascript SDK 进行 a/resolve?

ios - 如何在 iOS 中使用 SoundCloud SDK 请求轨道

node.js - soundcloud Node npm

javascript - 无法使用 Soundcloud JS api 流式传输歌曲

javascript - soundcloud API - JSON 轨道数与配置文件轨道数不匹配

python - 如何在 bash 脚本中使用访问 token 下载私有(private) Soundcloud 轨道

ios - SoundCloud Widget外部控制iOS问题

audio - 通过 HTTP 流式传输音频

javascript - 在 Soundcloud 中通过 streamable = true 过滤轨道

Javascript:从 soundcloud api 设置轨道位置