Available since firmware version 7.0
The ifRoSGScreen interface allows creation and initialization of a SceneGraph scene.
Implemented by
Supported Methods
Description of Methods
CreateScene(sceneType as String) as Object
Creates the SceneGraph scene object defined by the roSGScreen object identified by sceneType
.
GetScene() as roSGNode
This function returns the roSGScene object associated with the screen. This is the scene generally created in main.brs
by a roSGScreen.CreateScene()
call.
SetMessagePort(port as roMessagePort)
Specifies the roMessagePort object identified as port
as the message port object for the roSGScreen object.
GetMessagePort() as roMessagePort
Returns the roMessagePort object for the subject SceneGraph scene.
Show()
Renders the SceneGraph scene defined by the roSGScreen object on the display screen.
Close()
Removes the SceneGraph scene from the display screen.
getGlobalNode() as roSGNode
Available since firmware version 7.1
Returns a global reference object for the SceneGraph application.
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
<?xml version="1.0" encoding="utf-8" ?> <!--********** Copyright 2016 Roku Corp. All Rights Reserved. **********--> <component name="TrivialScene" extends="Scene"> <interface> </interface> <children> <LayoutGroup id = "Stuff" translation = "[100,100]" layoutDirection="horiz" vertAlignment="center" itemSpacings="[10]" > <Rectangle id = "Rect1" width = "200" height = "100" /> </LayoutGroup> </children> <script type="text/brightscript" > <![CDATA[ function init() print "TrivialScene init()" m.top.id = "top_TrivialScene" m.rect = m.top.findNode("Rect1") m.rect.color = m.global.red m.count = 0 m.top.observeField("rectcolor","rectColorChanged") end function function rectColorChanged() print "rect.color changed to"; m.rect.color end function function onKeyEvent(key as String, press as Boolean) as Boolean print "key '"; key; "' pressed "; press; " on node '"; m.top.id; "'" if key = "OK" and press m.count = m.count + 1 color = m.rect.color if m.rect.color = m.global.red m.rect.color = m.global.green else if m.rect.color = m.global.green m.rect.color = m.global.blue else m.rect.color = m.global.red end if end if return true end function ]]> </script> </component>