Roku 中的全局阵列访问
Array Access Globally in Roku
我在 Roku 中创建了一个全局节点,如 m.global = screen.getGlobalNode()
并在 xml 文件中添加接口标签,如下所示。
<interface>
<field id="GlobleURL" type="array"/>
</interface>
我直接在brs文件中使用m.top.GlobleURL.Push("Nik's")
它会产生错误。他们对此有什么解决方案吗?
正如SDKDocs所说,getGlobalNode() returns 一个已经静态创建的节点。您不能创建自己的全局节点,然后使用 getGlobalNode() 获取它。
如果您想从任何地方访问它,您可以通过 getGlobalAA().global.
获取它
正在为数组赋值--
在您的情况下,您很可能会收到错误“Interface not a member of BrightScript Component”。由于试图将元素推送到长度未定义的数组,您正面临此问题。所以试试
m.top.GlobalURL = ["Nik's"]
而不是“Push()”函数。
或者, 如果您想使用“Push()”函数,或者您的代码中有任何动态添加值的依赖项到数组,您可以在“**.brs*”文件中尝试以下方法--
m.GlobalURL = createObject("roArray", 2, true) ' 2 is initial size of array, and "true" defines that array can be resized to accommodate more elements as and when required
m.GlobalURL.Push("val1")
m.GlobalURL.Push("val2")
m.GlobalURL.Push("val3")
在此之后将“m.GlobalURL”分配给“m.top.GlobalURL”作为--
m.top.GlobalURL = m.GlobalURL
如上一个回答中所述,您无法创建自己的全局节点,这不足以全局访问数组。
全局访问数组--
要全局访问数组,请尝试这样的操作--
m.global = screen.getGlobalNode()
m.global.addFields({
GlobalURL : [],
})
每当您的代码修改“m.top.GlobalURL”时,添加以下代码以更新全局数组中的值-
m.global.AddReplace("GlobalURL" ,m.top.GlobalURL)
之后,您可以在应用程序的任何位置访问“GlobalURL”数组--
m.global.GlobalURL
希望这会有所帮助。
我在 Roku 中创建了一个全局节点,如 m.global = screen.getGlobalNode()
并在 xml 文件中添加接口标签,如下所示。
<interface>
<field id="GlobleURL" type="array"/>
</interface>
我直接在brs文件中使用m.top.GlobleURL.Push("Nik's")
它会产生错误。他们对此有什么解决方案吗?
正如SDKDocs所说,getGlobalNode() returns 一个已经静态创建的节点。您不能创建自己的全局节点,然后使用 getGlobalNode() 获取它。 如果您想从任何地方访问它,您可以通过 getGlobalAA().global.
获取它正在为数组赋值--
在您的情况下,您很可能会收到错误“Interface not a member of BrightScript Component”。由于试图将元素推送到长度未定义的数组,您正面临此问题。所以试试
m.top.GlobalURL = ["Nik's"]
而不是“Push()”函数。
或者, 如果您想使用“Push()”函数,或者您的代码中有任何动态添加值的依赖项到数组,您可以在“**.brs*”文件中尝试以下方法--
m.GlobalURL = createObject("roArray", 2, true) ' 2 is initial size of array, and "true" defines that array can be resized to accommodate more elements as and when required
m.GlobalURL.Push("val1")
m.GlobalURL.Push("val2")
m.GlobalURL.Push("val3")
在此之后将“m.GlobalURL”分配给“m.top.GlobalURL”作为--
m.top.GlobalURL = m.GlobalURL
如上一个回答中所述,您无法创建自己的全局节点,这不足以全局访问数组。
全局访问数组--
要全局访问数组,请尝试这样的操作--
m.global = screen.getGlobalNode()
m.global.addFields({
GlobalURL : [],
})
每当您的代码修改“m.top.GlobalURL”时,添加以下代码以更新全局数组中的值-
m.global.AddReplace("GlobalURL" ,m.top.GlobalURL)
之后,您可以在应用程序的任何位置访问“GlobalURL”数组--
m.global.GlobalURL
希望这会有所帮助。