如何在brightscript中创建一个可以被多个屏幕使用的通用视频播放器

How to create a common video player which can be used by multiple screens in brightscript

我需要从扩展组的两个或三个不同屏幕(即指南、功能)访问视频播放器。最初我想在所有 xml 文件中声明视频并在相应的 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>

谁能告诉我这是否正确。

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

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

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

访问

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

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

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

访问