You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Roku中创建全局变量并全局使用?以m.menuRowList为例

在Roku BrightScript中将m.menuRowList设置为全局变量并跨项目使用

一、设置全局变量的两种常用方式

BrightScript(Roku开发语言)里实现全局变量主要有两种可靠方案,适配不同场景:

1. 使用global关键字声明全局变量

在项目的入口文件(比如main.brs)或者所有使用该变量的文件之前,先声明全局变量,之后在获取节点的代码处完成赋值:

' 先在全局作用域声明变量(比如main.brs开头)
global gMenuRowList as Object

' 在需要获取节点的场景/组件代码中赋值
m.menuRowList = m.top.findNode("MenuRowList")
gMenuRowList = m.menuRowList

2. 挂载到SceneGraph的全局m.global节点

如果是基于SceneGraph框架开发,可将节点挂载到全局共享的m.global节点,所有场景/组件都能访问:

sub init()
    m.menuRowList = m.top.findNode("MenuRowList")
    ' 将节点引用挂载到全局节点
    m.global.menuRowList = m.menuRowList
end sub

二、在项目中使用全局变量

1. 使用global声明的变量

在任意.brs文件中,直接引用全局变量即可,建议使用前先做非空校验避免报错:

if gMenuRowList <> invalid then
    ' 示例:设置节点焦点
    gMenuRowList.setFocus(true)
    ' 示例:更新节点内容
    gMenuRowList.content = newMenuContent
end if

2. 使用m.global挂载的变量

在其他场景或组件中,通过m.global直接获取引用:

menuRowList = m.global.menuRowList
if menuRowList <> invalid then
    ' 执行节点操作
    menuRowList.visible = true
end if

注意事项

  • 全局变量必须在赋值完成后再使用,否则会返回invalid,务必添加非空判断
  • 避免全局变量命名冲突,建议给全局变量加统一前缀(比如g_)
  • 不要过度滥用全局变量,复杂场景下优先考虑组件传参或事件通知的方式

内容的提问来源于stack exchange,提问作者Rahul Rathod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:01:00