Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
mkdir1995
Level 7

Global variables in Scene Graph

I'm wondering what the best way to create global variables within the Scene Graph SDK is. With the old SDK, I was able to just store everything in a .json file and use ReadAsciiFile() to reference the variables. I was using it in my main() function. 

variables.json file:

{
 "serverURL":             "http://api.server.com",
  "id":                    1234,
  "appVersion":           "1.1.0",
}


main.brs:

  configureAsString = ReadAsciiFile("pkg:/config/variables.json")
  m.append(ParseJSON(configureAsString))


According to this link https://sdkdocs.roku.com/display/sdkdoc/BrightScript+Support it says I can only use ReadAsciiFile() in a Task Node, which leads me to my questions:
1) Is there a simpler way? Do I NEED to create a Task Node? I'm still wrapping my mind around them, lol
2) If I absolutely need to create a task node, what is the most basic way? All I really need is to have a file with a list of variables that I can reference often throughout the code. Such as IDs, URLs, etc.

Any help would be appreciated! Thank you!
0 Kudos
2 Replies
squirreltown
Level 8

Re: Global variables in Scene Graph

screen = CreateObject("roSGScreen")
port = CreateObject("roMessagePort")
screen.setMessagePort(port)
m.global = screen.getGlobalNode()
m.global.AddField("mystuff", "assocarray", false)
m.global.mystuff = parseJSON(readAsciiFile("pkg:/your.json"))
scene = screen.CreateScene("Main")
screen.show()

I do it this way. m.global.mystuff will be available everywhere.
Kinetics Screensavers
0 Kudos
mkdir1995
Level 7

Re: Global variables in Scene Graph

"squirreltown" wrote:
screen = CreateObject("roSGScreen")
port = CreateObject("roMessagePort")
screen.setMessagePort(port)
m.global = screen.getGlobalNode()
m.global.AddField("mystuff", "assocarray", false)
m.global.mystuff = parseJSON(readAsciiFile("pkg:/your.json"))
scene = screen.CreateScene("Main")
screen.show()

I do it this way. m.global.mystuff will be available everywhere.

totally missed this reply, but I ended up using a Global Node as well and was able to easily retrieve it in the XML component. Thanks!!  Smiley Very Happy
0 Kudos