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