Roku:: Перенаправление с одного экрана на другой автоматически

Так как у меня есть один API с дает два параметра, то есть: действительный с иметь 0 и 1 и atuh, которые имеют случайный код и бу, используя nod задачи, я стал успешным, чтобы отобразить этот случайный код аутентификации на экране, но наша логика, когда этот случайный код зарегистрирован пользователем действительный параметр автоматически дает 1 ранее, у него будет 0, поэтому моя проблема в том, что, когда пользователь не зарегистрирован, у действительного API будет 0, поэтому экран будет отображаться в произвольном порядке и после этого пользователь будет вводить этот код и регистрировать o после ввода этого действительный код будет иметь 1 ответ, так что теперь я хочу, чтобы экран автоматически перенаправлялся на список каналов со случайного отображения кода. o как мы можем это сделать, я буду

main.brs

' ********** Copyright 2016 Roku Corp.  All Rights Reserved. ********** 

 sub RunUserInterface()
    screen = CreateObject("roSGScreen")
     port = CreateObject("roMessagePort")
    screen.SetMessagePort(port)
    m.simpleTask.ObserveField("taskValid", "onTaskVallid")
m.simpleTask.control = "RUN"


    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("MessageTaskScene") 

      screen.Show()
      'while false sleep and hit api

      'scene/screen ko value 

    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://demo5770907.mockable.io/roku/validate")
    rsp = url.GetToString()


    return rsp



end function

MessageTaskScene.brs

function init()
m.top.setFocus(true)
m.myLabel = m.top.findNode("myLabel")
m.simpleTask = CreateObject("roSGNode", "SimpleTask")
m.simpleTask.ObserveField("taskRamdomCode", "onTaskResult")
m.simpleTask.ObserveField("taskValid", "onTaskValid")
m.simpleTask.control = "RUN"
'print m.simpleTask
' m.myLabel.text = "HOW"


end function

function onTaskResult() as void
'print stri(m.simpleTask.taskResult)+"helo"
'print  m.simpleTask.taskRamdomCode

messge="You havent login yet so please login in your Roku login page with this registration code:"+m.simpleTask.taskRamdomCode
m.myLabel.text=messge

m.myLabel.font.size=40
'
'    'Set the color to light blue
m.myLabel.color="0x72D7EEFF"
end function

function  onTaskValid() as string

return  m.simpleTask.taskValid

end function

MessageTaskscene.xml

<?xml version="1.0" encoding="UTF-8"?>
<component name="MessageTaskScene" extends="Scene" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">


<script type="text/brightscript" uri="pkg:/components/screens/MessageTaskScene/MessageTaskScene.brs"/>


    <children>
       <Label id="myLabel" 
        text="This is first screen message"
        width="1280" 
        height="720" 
        horizAlign="left"
        vertAlign="center"
        wrap ="true"
        />




    </children>

</component>

SimpleTask.xml

<?xml version="1.0" encoding="UTF-8"?>
<component name="SimpleTask" extends="Task" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
<interface>
    <field id="taskRamdomCode" type="string" value="0" />
     <field id="taskValid" type="string" value="0" />
</interface>

<script type="text/brightscript" >
<![CDATA[

sub init()
    m.top.functionName = "getcode"
end sub

function getcode() As void
flag =true
while (flag)
    sleep(2000)
    url = CreateObject("roUrlTransfer") 
    url.SetUrl("http://demo5770907.mockable.io/roku/validate")
    rsp = url.GetToString()
    response = parseJSON(rsp)

   m.top.taskRamdomCode=response.atuh
   m.top.taskValid=response.valid
   if(response.valid = "1")
    flag = false
   endif

endwhile


end function

]]>
</script>

</component>

Кто-нибудь может мне помочь? Я хочу изменить экран с MessageTaskscene на HomeScene автоматически, как только пользователь введет этот случайный код и получит регистрацию

0 ответов

Другие вопросы по тегам