使用YouTube API自定义进度条

时间:2014-09-17 22:03:02

标签: javascript youtube youtube-api

我想使用YouTube API创建自定义进度条,我认为进行进度计算的最佳事件监听器是YT.PlayerState.PLAYING事件监听器。 但是这个事件根本不起作用。我认为这是完全错误的。有什么想法吗?

player.addEventListener("YT.PlayerState.PLAYING", function() {
    console.log(player.getDuration());
});

添加或删除事件侦听器

player.addEventListener(event:String, listener:String):Void     为指定的事件添加侦听器函数。下面的“事件”部分标识了玩家可能触发的不同事件。监听器是一个字符串,它指定在指定事件触发时将执行的函数。

player.removeEventListener(event:String, listener:String):Void     删除指定事件的侦听器函数。侦听器是一个字符串,用于标识在指定事件触发时不再执行的函数。

活动

onStateChange     只要玩家的状态发生变化,此事件就会触发。 API传递给事件侦听器函数的值将指定与新播放器状态对应的整数。可能的值有:

-1 (unstarted)
0 (ended)
1 (playing)
2 (paused)
3 (buffering)
5 (video cued).

    当玩家首次加载视频时,它将广播未启动的(-1)事件。当视频被提示并准备播放时,播放器将播放视频提示(5)事件。在您的代码中,您可以指定整数值,也可以使用以下命名空间变量之一:

YT.PlayerState.ENDED
YT.PlayerState.PLAYING
YT.PlayerState.PAUSED
YT.PlayerState.BUFFERING
YT.PlayerState.CUED

1 个答案:

答案 0 :(得分:4)

YT.PlayerState.PLAYING状态不是您可以收听的事件onStateChange 然后,如果状态正在播放,您可以从播放器获取信息并相应地更新搜索栏。

player.addEventListener("onStateChange", updateBar);

function updateBar () {
    if (YT.PlayerState.PLAYING) {
        console.log(player.getCurrentTime());
        setTimeout(updateBar,200);
    }
}

我之前回答过这个问题但很糟糕:-( 我仍然在这里留下旧的懒惰答案代码的链接:http://jsfiddle.net/nvtsazbr/