Глобальный доступ к массиву в Roku - PullRequest
1 голос
/ 08 ноября 2019

Я создаю глобальный узел в Roku, например m.global = screen.getGlobalNode(), и добавляю тег интерфейса в XML-файл, как показано ниже.

<interface>
    <field id="GlobleURL" type="array"/>
</interface>    

, и я напрямую использую в файле brs m.top.GlobleURL.Push("Nik's") Он генерирует ошибку. Есть ли какое-либо решение для этого.

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Присвоение значений массиву -

В вашем случае, скорее всего, вы получите ошибку " Интерфейс не является членом компонента BrightScript ". Вы сталкиваетесь с этой проблемой из-за попытки поместить элемент в массив, длина которого не определена. Поэтому попробуйте

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

Надеюсь, это поможет.

0 голосов
/ 08 ноября 2019

Как говорит SDKDocs , getGlobalNode () возвращает узел, который уже был создан статически. Вы не можете создать свой собственный глобальный узел, а затем получить его, используя getGlobalNode () . Если вы хотите получить к нему доступ из любого места, вы можете получить его через getGlobalAA (). Global .

...