首页 > 解决方案 > 如何在brightscript中创建一个可以被多个屏幕使用的通用视频播放器

问题描述

我需要从扩展 Group 的两个或三个不同屏幕(即指南、功能)访问视频播放器。最初我想在所有 xml 文件中声明 Video 并在相应的 brs 文件中访问它,如下所示

.xml

<Video id="VideoPlayer" visible="false" translation="[0, 0]" width="1920" height="1080" />

.brs

m.video = m.top.findNode("VideoPlayer")

这工作正常。但后来我意识到我不必要地创建了多个视频播放器实例。我打算在一个地方创建并在所有打算使用播放器的屏幕中使用它。但我无法理解如何创建播放器。谁能让我知道我是否需要为视频创建一个屏幕文件(.xml)来实现这一点

<?xml version="1.0" encoding="UTF-8"?>
<component name="VideoPlayer" extends="Group">
    <children>
        <Video id="VideoPlayer" visible="false" translation="[0, 0]" width="1920" height="1080" />
    </children>

    <script type="text/brightscript" uri="pkg://components/Player/VideoPlayer.brs"/>
</component>

任何人都可以让我知道这是否是正确的方法。

标签: rokubrightscript

解决方案


有不止一种方法可以做到这一点。也许最简单的方法是在全局上创建播放器并从任何地方访问它。

m.global.addField("player","node", false)
m.global.player = createObject("RoSGNode","VideoPlayer")

然后在屏幕中您可以使用m.global.player

您还可以将其创建为组件并根据需要将其传递给您的子组件(屏幕),方法是向每个组件添加字段定义以引用播放器。在每个组件的接口定义中:

<field id="player" type="node" />

然后在创建屏幕时,将上面的播放器字段设置为您的一个播放器实例。然后在屏幕中您可以使用m.top.player


推荐阅读