如何清除BrightScript中全局roArray的内容?

时间:2018-11-16 18:07:32

标签: brightscript

我创建了roArray并将其添加到如下所示的全局范围中

columnSize = CreateObject("roArray", 3 , true)
m.global.addFields({guideColumnSize: columnSize})

我将值添加到guideColumnSize中,如下所示

columnSize = m.global.guideColumnSize
columnSize[x] = adjustColumn

添加值后即可打印。我添加了5个48值。但是我无法清除,删除或修改数组中的值。这些请求将被忽略。

我尝试过

m.global.guideColumnSize.delete(0)
m.global.guideColumnSize.clear()
m.global.guideColumnSize[0] = 2

什么都没用。我只能执行的操作是将值附加在数组的末尾。任何人都可以让我知道如何在Brightscript中修改或清除全局roArray的内容吗?

2 个答案:

答案 0 :(得分:2)

要清除或删除Brightscript中的全局变量,请使用以下代码

m.global.guideColumnSize = invalid

m.global.setFields({guideColumnSize : invalid})

您可以重新初始化roArray对象并将其存储到相同的全局变量

答案 1 :(得分:1)

您不能直接在全局节点中修改数组/关联数组中的元素。您必须访问该对象,对其进行修改,然后将其保存回全局字段(请参见https://sdkdocs.roku.com/display/sdkdoc/SceneGraph+Data+Scoping-全局范围部分)。

假设结构与示例相同,则可以执行以下操作:

columnSize = [1, 2, 3]
m.global.addFields({guideColumnSize: columnSize})

newColumnSize = m.global.guideColumnSize
newColumnSize[1] = 0
m.global.guideColumnSize = newColumnSize

打印m.global.guideColumnSize将返回[1, 0, 3]

您只是错过了将修改后的数组重新分配回全局字段的步骤。

要清除全局节点字段,可以使用m.global.removeField("guideColumnSize")或简单地设置m.global.guideColumnSize = invalid