So I’m building a channel using Brightscript, I’m facing an problem with accessing a particular variable thats located in another component, I checked online and I can’t seem to understand how exactly should I do it, I tried using the global method but it doesnt work and i also tried import the script of the other file in the component xml file.
to expose one field from one component and to use it in another component, you have to add that field as an ‘interface’ and that exposes it as the equivalent of a public field in OOP programming
then you should be able to see it in the other component
thisComponent = createObject(“ThisComponent”)
thisComponent.someName=“giveItAValueHere”
there is also a m.global object which you can add to, but these should be genuine global variables across the app.
https://developer.roku.com/en-gb/docs/references/brightscript/interfaces/ifsgscreen.md
sub showChannelSGScreen()
print "in showChannelSGScreen"
screen = CreateObject("roSGScreen")
m.port = CreateObject("roMessagePort")
screen.setMessagePort(m.port)
m.global = screen.getGlobalNode()
m.global.id = "GlobalNode"
m.global.addFields( {red: &hff0000ff, green: &h00ff00ff, blue: &h0000ffff} )
scene = screen.CreateScene("TrivialScene")
screen.show()
scene.setFocus(true)
child = createObject("RoSGNode","ContentNode")
child.contentkey = "test_string"
print "child: '"; child.contentkey; "'"
while(true)
msg = wait(0, m.port)
msgType = type(msg)
if msgType = "roSGScreenEvent"
if msg.isScreenClosed() then return
end if
end while
end sub
which can be obtained in the app as m.global.red
