在多个点暂停 Youtube API 视频

问题描述

我正在使用此代码停止 youtube API 视频。

 function onPlayerStateChange(event) {

  var time,rate,remainingTime;
  clearTimeout(stopPlayTimer);
  if (event.data == YT.PlayerState.PLAYING) {
    time = player.getCurrentTime()
    if (time < stopPlayAt) {
      rate = player.getPlaybackRate();
      remainingTime = (stopPlayAt - time) / rate;
      stopPlayTimer = setTimeout(pauseVideo,remainingTime * 1000);
    }

  }
}

我正在使用从 pauseVideo 函数触发的以下函数

function replay() {
  player.seekTo(startPlayAt,true)
  player.playVideo()
}

代码的数据来自

var data = [{
  startPlayAt: 0,stopPlayAt: 10
}]

显然我正在使用地图函数和 pauseVideo 函数

当我像这样使用多个数据时,问题就开始了

var data = [{
  startPlayAt: 0,stopPlayAt: 10,},{
  startPlayAt: 10,stopPlayAt: 20,}]

我尝试使用 for 循环,如果在 onPlayerStateChange 中的 for 循环内。但没有任何效果。 当我使用 for 循环时,它只是背靠背运行所有可迭代对象,甚至不会在执行第二个可迭代对象之前等待视频的当前时间超过数据的 stopPlayAt 值。

所有函数都应该只使用data[0],只有当视频的当前时间大于数据集中的stopPlayAt时间时,才使用另一个数据停止视频并启动视频。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)