roku - 如何在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>
任何人都可以让我知道这是否是正确的方法。
解决方案
有不止一种方法可以做到这一点。也许最简单的方法是在全局上创建播放器并从任何地方访问它。
m.global.addField("player","node", false)
m.global.player = createObject("RoSGNode","VideoPlayer")
然后在屏幕中您可以使用m.global.player
您还可以将其创建为组件并根据需要将其传递给您的子组件(屏幕),方法是向每个组件添加字段定义以引用播放器。在每个组件的接口定义中:
<field id="player" type="node" />
然后在创建屏幕时,将上面的播放器字段设置为您的一个播放器实例。然后在屏幕中您可以使用m.top.player
推荐阅读
- c# - 如何将 JSON 正文属性映射为具有验证的 .NET Core Web API 操作方法的动态参数?
- python - Unable to locate package python3-pip in Dockerfile while having Universal Repos enabled
- javascript - Javascript字段验证代码不起作用
- excel - Duplicate value not deleted
- vue.js - Vue.js Routing shows 404 error message briefly before redirect after auth check
- python - How to efficiently submit multiple SQL query strings in Python?
- r - 我的 R 函数消耗了太多内存。你能帮我优化一下吗?
- c# - Unity Prefab Enemies Behave the same
- html - 无法左对齐图
- android - Prevent LaunchedEffect from re-running on configuration change