我想使用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
答案 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/