我发现尝试使用 Jake M 的方法对我不起作用。我不知道是不是因为 API 发生了变化,但是遵循逻辑并使用我的控制台,逻辑总是会在触发快进触发器之前暂停。
奇怪的是,过了一会儿,当我快进时,它只暂停了一次,而不是多次。
由于这是一种异步情况(等待玩家事件),我发现最好从需要时间考虑的外部查看器方法中处理它,并进行 2 次检查:首先查看我们之前是否检查过,第二个是查看玩家当前是否正在播放。
如果您在第一次检查后 0.8 秒进行检查,它会给玩家足够的时间来确定是否应该暂停或播放,此时再次运行检查以查看是否应该
var check = false;
var playing = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
slider.startStop(false);
playing = true;
} else if (event.data == YT.PlayerState.PAUSED) {
playing = false;
pauseCheck();
} else if (event.data == YT.PlayerState.ENDED) {
slider.goForward();
slider.startStop(true);
}
}
function pauseCheck() {
// First time check is a "wait".
if(!check) {
check = true;
setTimeout(pauseCheck, 800);
// Second time check to determine true status.
} else {
// This means we fast-forwarded or rewound.
if(playing) {
// DO FF / RW THINGS.
// This means we really did want to pause.
} else {
// DO PAUSE THINGS
}
check = 0;
}
}