【问题标题】:Trigger Roku back action触发 Roku 后退动作
【发布时间】:2018-06-11 00:49:34
【问题描述】:

有没有办法通过 BrightScript 触发 roku 后退操作?

我想从导航堆栈中弹出当前屏幕,并显示上一个屏幕。

我需要这个有几个原因:

1.) 屏幕上将出现一个后退按钮,用户可以导航到该按钮并按下该按钮。按下此按钮应触发类似于按下遥控器上的后退按钮的后退操作。 (想想浏览器的 window.history.back())

2.) 我想在调用某些回调事件时触发这个返回动作。

我目前使用以下任务导航:

function init()
    ? "[NavigationTask] init()"
    m.top.functionName = "gotoScreen"
end function

sub gotoScreen()
    if m.top.sceneName <> invalid then
        handleNav(m.top.sceneName)
    else
        print "[NavigationTask] sceneName not specified"
    end if
end sub

sub handleNav(sceneName as String)
    print "[NavigationTask] handleNav"

    screen = CreateObject("roSGScreen")
    m.port = createObject("roMessagePort")
    screen.SetMessagePort(m.port)

    if screen <> invalid
        scene = screen.CreateScene(sceneName)
        screen.Show()

        while(true)
            msg = wait(0, m.port)
            msgType = type(msg)
            print "[NavigationTask] msg : "; msgType" scene="sceneName 
            if msgType = "roSGScreenEvent"
                if msg.isScreenClosed() then return
            end if
        end while
    else 
        print "[NavigationTask] Invalid roSGScreen"
    end if   
end sub

任务是这样调用的:

   m.NavigationTask   = createObject("roSGNode","NavigationTask")
   m.NavigationTask.sceneName = videoScreen()
   m.NavigationTask.control  ="RUN"

【问题讨论】:

  • 为什么不使用类似于切换功能的东西来获得可见性?你打算使用相同的任务和内容节点吗?

标签: roku brightscript scenegraph


【解决方案1】:

由于Thread Rendezvous,我不建议在任务线程中处理导航,而且您可以只拥有一个 roSGScreen 和一个场景,并让组/矩形充当您的应用程序“屏幕”。这将是一种性能更高的解决方案。

但无论如何,回到您的问题,您可以使用External Control API 以编程方式模拟背压。

ecpRequest = CreateObject("roUrlTransfer")
url = "http://" + roku_ip + ":8060/keypress/back"
ecpRequest.setURL(url)
ecpRequest.postFromString("")

您可以从roDeviceInfo获取roku ip地址。

【讨论】:

  • 如果我没记错的话,不用ip地址,你可以用localhost替换它:http://localhost:8060/keypress/back
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多