roku中main.brs的调用函数
Call function of main.brs in roku
如何将main.brs的函数调用到其他.brs文件中?
你们能帮帮我吗?因为我是 Roku 的新人。
我已经在 customscreen.xml 中给出了 main.brs 文件的路径,但是通过这种方法它不起作用
我有一个 API URL,它给出状态为 0,1,另一个随机 code.i 在 main.brs 中创建了一个函数,并在 main 中调用它们来显示不同的场景在 0 和 1 状态和 custom.brs 状态下,我做了一个屏幕显示方法,所以现在我想要那个随机代码,这样我就可以在屏幕上显示那个随机代码
这是 main.brs 和自定义 brs 文件
的代码
main.brs
' ********** 版权所有 2016 Roku Corp. 保留所有权利。 **********
sub RunUserInterface()
screen = CreateObject("roSGScreen")
port = CreateObject("roMessagePort")
screen.SetMessagePort(port)
res=getauth()
response = parseJSON(res)
' print "what we got:"response
'
' print response.valid
' print response.atuh
' chck=status.valid
' print chck
status=response.valid
if status = "1" then
scene = screen.CreateScene("HomeScene")
screen.Show()
else
scene = screen.CreateScene("MessageScreen")
screen.Show()
while (true)
msg = wait(10, m.port)
msgType = type(msg)
endwhile
endif
oneRow = GetApiArray()
list = [
{
Title:"First row"
ContentList : oneRow
}
{
Title:"Second row"
ContentList : oneRow
}
]
scene.gridContent = ParseXMLContent(list)
while true
msg = wait(0, port)
print "------------------"
print "msg = "; msg
end while
if screen <> invalid then
screen.Close()
screen = invalid
end if
end sub
Function ParseXMLContent(list As Object)
RowItems = createObject("RoSGNode","ContentNode")
for each rowAA in list
row = createObject("RoSGNode","ContentNode")
row.Title = rowAA.Title
for each itemAA in rowAA.ContentList
item = createObject("RoSGNode","ContentNode")
' We don't use item.setFields(itemAA) as doesn't cast streamFormat to proper value
for each key in itemAA
item[key] = itemAA[key]
end for
row.appendChild(item)
end for
RowItems.appendChild(row)
end for
return RowItems
End Function
Function GetApiArray()
url = CreateObject("roUrlTransfer")
url.SetUrl("http://api.delvenetworks.com/rest/organizations/59021fabe3b645968e382ac726cd6c7b/channels/1cfd09ab38e54f48be8498e0249f5c83/media.rss")
rsp = url.GetToString()
responseXML = ParseXML(rsp)
responseXML = responseXML.GetChildElements()
responseArray = responseXML.GetChildElements()
result = []
for each xmlItem in responseArray
if xmlItem.getName() = "item"
itemAA = xmlItem.GetChildElements()
if itemAA <> invalid
item = {}
for each xmlItem in itemAA
item[xmlItem.getName()] = xmlItem.getText()
if xmlItem.getName() = "media:content"
item.stream = {url : xmlItem.url}
item.url = xmlItem.getAttributes().url
item.streamFormat = "mp4"
mediaContent = xmlItem.GetChildElements()
for each mediaContentItem in mediaContent
if mediaContentItem.getName() = "media:thumbnail"
item.HDPosterUrl = mediaContentItem.getattributes().url
item.hdBackgroundImageUrl = mediaContentItem.getattributes().url
end if
end for
end if
end for
result.push(item)
end if
end if
end for
return result
End Function
Function ParseXML(str As String) As dynamic
if str = invalid return invalid
xml = CreateObject("roXMLElement")
if not xml.Parse(str) return invalid
return xml
End Function
function getauth() As string
url = CreateObject("roUrlTransfer")
url.SetUrl("http://demo8592579.mockable.io/rokuTest/auth")
rsp = url.GetToString()
return rsp
end function
function GetCode() As string
url = CreateObject("roUrlTransfer")
url.SetUrl("http://demo8592579.mockable.io/rokuTest/auth")
rsp = url.GetToString()
response=parseJSON(rsp)
return response
end function
MessageScreen.brs
function init()
m.top.setFocus(true)
m.myLabel = m.top.findNode("myLabel")
m.myLabel.text = "HOW"
m.myLabel.font.size=92
'
' 'Set the color to light blue
m.myLabel.color="0x72D7EEFF"
end function
现在我想在Messagescreen.brs中显示随机代码,你们能帮帮我吗?
如果你想从你的 GetCode() 函数中获得对场景的响应,将 GetCode() 函数放在一个 TASK 中,然后 运行 例如,场景 init() 函数中的 TASK 你会得到代码一旦 TASK 从 API 得到你的回应。
看起来你不知道这个选项,所以请在开始之前阅读:
https://sdkdocs.roku.com/display/sdkdoc/Task。
如果您需要有关如何使用任务的真实示例,请同时查看我的存储库:
https://github.com/umitic/Roku-Custom-Audio-Player
如何将main.brs的函数调用到其他.brs文件中? 你们能帮帮我吗?因为我是 Roku 的新人。 我已经在 customscreen.xml 中给出了 main.brs 文件的路径,但是通过这种方法它不起作用 我有一个 API URL,它给出状态为 0,1,另一个随机 code.i 在 main.brs 中创建了一个函数,并在 main 中调用它们来显示不同的场景在 0 和 1 状态和 custom.brs 状态下,我做了一个屏幕显示方法,所以现在我想要那个随机代码,这样我就可以在屏幕上显示那个随机代码 这是 main.brs 和自定义 brs 文件
的代码main.brs ' ********** 版权所有 2016 Roku Corp. 保留所有权利。 **********
sub RunUserInterface()
screen = CreateObject("roSGScreen")
port = CreateObject("roMessagePort")
screen.SetMessagePort(port)
res=getauth()
response = parseJSON(res)
' print "what we got:"response
'
' print response.valid
' print response.atuh
' chck=status.valid
' print chck
status=response.valid
if status = "1" then
scene = screen.CreateScene("HomeScene")
screen.Show()
else
scene = screen.CreateScene("MessageScreen")
screen.Show()
while (true)
msg = wait(10, m.port)
msgType = type(msg)
endwhile
endif
oneRow = GetApiArray()
list = [
{
Title:"First row"
ContentList : oneRow
}
{
Title:"Second row"
ContentList : oneRow
}
]
scene.gridContent = ParseXMLContent(list)
while true
msg = wait(0, port)
print "------------------"
print "msg = "; msg
end while
if screen <> invalid then
screen.Close()
screen = invalid
end if
end sub
Function ParseXMLContent(list As Object)
RowItems = createObject("RoSGNode","ContentNode")
for each rowAA in list
row = createObject("RoSGNode","ContentNode")
row.Title = rowAA.Title
for each itemAA in rowAA.ContentList
item = createObject("RoSGNode","ContentNode")
' We don't use item.setFields(itemAA) as doesn't cast streamFormat to proper value
for each key in itemAA
item[key] = itemAA[key]
end for
row.appendChild(item)
end for
RowItems.appendChild(row)
end for
return RowItems
End Function
Function GetApiArray()
url = CreateObject("roUrlTransfer")
url.SetUrl("http://api.delvenetworks.com/rest/organizations/59021fabe3b645968e382ac726cd6c7b/channels/1cfd09ab38e54f48be8498e0249f5c83/media.rss")
rsp = url.GetToString()
responseXML = ParseXML(rsp)
responseXML = responseXML.GetChildElements()
responseArray = responseXML.GetChildElements()
result = []
for each xmlItem in responseArray
if xmlItem.getName() = "item"
itemAA = xmlItem.GetChildElements()
if itemAA <> invalid
item = {}
for each xmlItem in itemAA
item[xmlItem.getName()] = xmlItem.getText()
if xmlItem.getName() = "media:content"
item.stream = {url : xmlItem.url}
item.url = xmlItem.getAttributes().url
item.streamFormat = "mp4"
mediaContent = xmlItem.GetChildElements()
for each mediaContentItem in mediaContent
if mediaContentItem.getName() = "media:thumbnail"
item.HDPosterUrl = mediaContentItem.getattributes().url
item.hdBackgroundImageUrl = mediaContentItem.getattributes().url
end if
end for
end if
end for
result.push(item)
end if
end if
end for
return result
End Function
Function ParseXML(str As String) As dynamic
if str = invalid return invalid
xml = CreateObject("roXMLElement")
if not xml.Parse(str) return invalid
return xml
End Function
function getauth() As string
url = CreateObject("roUrlTransfer")
url.SetUrl("http://demo8592579.mockable.io/rokuTest/auth")
rsp = url.GetToString()
return rsp
end function
function GetCode() As string
url = CreateObject("roUrlTransfer")
url.SetUrl("http://demo8592579.mockable.io/rokuTest/auth")
rsp = url.GetToString()
response=parseJSON(rsp)
return response
end function
MessageScreen.brs
function init()
m.top.setFocus(true)
m.myLabel = m.top.findNode("myLabel")
m.myLabel.text = "HOW"
m.myLabel.font.size=92
'
' 'Set the color to light blue
m.myLabel.color="0x72D7EEFF"
end function
现在我想在Messagescreen.brs中显示随机代码,你们能帮帮我吗?
如果你想从你的 GetCode() 函数中获得对场景的响应,将 GetCode() 函数放在一个 TASK 中,然后 运行 例如,场景 init() 函数中的 TASK 你会得到代码一旦 TASK 从 API 得到你的回应。 看起来你不知道这个选项,所以请在开始之前阅读: https://sdkdocs.roku.com/display/sdkdoc/Task。
如果您需要有关如何使用任务的真实示例,请同时查看我的存储库: https://github.com/umitic/Roku-Custom-Audio-Player