如何访问版本 5 中的 videojs.SeekBar 和 ControlBar?
How can I access videojs.SeekBar and ControlBar in version 5?
我想将 this plugin 移植到新的 videojs 版本 5。我更新了大部分插件以适应新的 videojs.extend()
要求并更新了 public 函数声明。
我坚持的部分是当您尝试将新组件加载到 videojs 中时:
//Range Slider Time Bar
videojs.SeekBar.prototype.options_.children.RSTimeBar = {};
//Panel with the time of the range slider
videojs.ControlBar.prototype.options_.children.ControlTimePanel = {};
如果我理解正确(我有一些疑问),它正在扩展 videojs 的特定部分以包含插件组件。
问题是 videojs.SeekBar
和 videojs.ControlBar
是未定义的,我不知道在 v5 中访问它们的正确方法(或者创建这些空对象,如果它不是你的方式再做)。 videojs wiki 文章“5.0 changes details”
中也没有说明
The full code is available here.。故障线是421和422
编辑
如果将这些行替换为以下行,我可以消除错误:
videojs.getComponent("SeekBar").prototype.options_.children.RSTimeBar = {}; //Range Slider Time Bar
videojs.getComponent("ControlBar").prototype.options_.children.ControlTimePanel = {}; //Panel with the time of the range slider
但是在插件构造函数中,我找不到组件:
//components of the plugin
var controlBar = player.controlBar;
var seekBar = controlBar.progressControl.seekBar;
this.components.RSTimeBar = seekBar.RSTimeBar; //is undefined
当我探索 videoJs 对象时,在我的调试器中,我确实可以找到 player.controlBar.progressControl.seekBar
,但它没有名为 RSTimebar
的子对象,除了 options_.children
。这是有道理的,因为它是我定义它的地方。但是不知道为什么4版能找到,5版找不到。
编辑 2
我注意到 options_.children
数组中的 RSTimebar
是作为对象而不是一对 index/string 插入的。所以我把台词改成这样:
videojs.getComponent("SeekBar").prototype.options_.children.push("RSTimeBar"); //Range Slider Time Bar
videojs.getComponent("ControlBar").prototype.options_.children.push("ControlTimePanel"); //Panel with the time of the range slider
结果:插件已正确加载,每个组件有一个警告:
VIDEOJS: WARN: The RSTimeBar component was added to the videojs object
when it should be registered using videojs.registerComponent(name,
component)
我现在只需要找出正确和最简单的方法来正确加载组件。
由于 a commit 完成了大部分工作,我终于设法更新了插件。
我想将 this plugin 移植到新的 videojs 版本 5。我更新了大部分插件以适应新的 videojs.extend()
要求并更新了 public 函数声明。
我坚持的部分是当您尝试将新组件加载到 videojs 中时:
//Range Slider Time Bar
videojs.SeekBar.prototype.options_.children.RSTimeBar = {};
//Panel with the time of the range slider
videojs.ControlBar.prototype.options_.children.ControlTimePanel = {};
如果我理解正确(我有一些疑问),它正在扩展 videojs 的特定部分以包含插件组件。
问题是 videojs.SeekBar
和 videojs.ControlBar
是未定义的,我不知道在 v5 中访问它们的正确方法(或者创建这些空对象,如果它不是你的方式再做)。 videojs wiki 文章“5.0 changes details”
The full code is available here.。故障线是421和422
编辑
如果将这些行替换为以下行,我可以消除错误:
videojs.getComponent("SeekBar").prototype.options_.children.RSTimeBar = {}; //Range Slider Time Bar
videojs.getComponent("ControlBar").prototype.options_.children.ControlTimePanel = {}; //Panel with the time of the range slider
但是在插件构造函数中,我找不到组件:
//components of the plugin
var controlBar = player.controlBar;
var seekBar = controlBar.progressControl.seekBar;
this.components.RSTimeBar = seekBar.RSTimeBar; //is undefined
当我探索 videoJs 对象时,在我的调试器中,我确实可以找到 player.controlBar.progressControl.seekBar
,但它没有名为 RSTimebar
的子对象,除了 options_.children
。这是有道理的,因为它是我定义它的地方。但是不知道为什么4版能找到,5版找不到。
编辑 2
我注意到 options_.children
数组中的 RSTimebar
是作为对象而不是一对 index/string 插入的。所以我把台词改成这样:
videojs.getComponent("SeekBar").prototype.options_.children.push("RSTimeBar"); //Range Slider Time Bar
videojs.getComponent("ControlBar").prototype.options_.children.push("ControlTimePanel"); //Panel with the time of the range slider
结果:插件已正确加载,每个组件有一个警告:
VIDEOJS: WARN: The RSTimeBar component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)
我现在只需要找出正确和最简单的方法来正确加载组件。
由于 a commit 完成了大部分工作,我终于设法更新了插件。