You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Roku中实现返回键触发的确认退出对话框

Roku应用返回键退出确认对话框实现方案

1. 处理MainScene中的返回键事件

在MainScene.brs里重写OnKeyEvent方法,捕获遥控器返回键(KEY_BACK)事件,拦截默认退出行为,触发确认对话框:

sub Init()
    ' 场景初始化逻辑
end sub

function OnKeyEvent(key as String, press as Boolean) as Boolean
    if press and key = "KEY_BACK" then
        ShowExitConfirmationDialog()
        return true ' 标记事件已处理,阻止默认行为
    end if
    return false ' 其他事件交给系统默认处理
end function

2. 实现退出确认对话框

在MainScene.brs中添加对话框创建与事件处理函数,使用Roku原生roMessageDialog组件实现交互:

sub ShowExitConfirmationDialog()
    dialog = CreateObject("roMessageDialog")
    dialog.SetMessage("确定要退出应用吗?")
    dialog.SetButtons(["OK", "Cancel"])
    dialog.SetMessagePort(m.port) ' 绑定场景的消息端口接收对话框事件
    
    dialog.Show()
    
    ' 等待用户选择并处理结果
    while true
        msg = wait(0, m.port)
        msgType = type(msg)
        if msgType = "roMessageDialogEvent" then
            if msg.GetSelectedButton() = "OK" then
                ' 用户确认退出,关闭屏幕触发应用退出
                screen = m.top.GetScene().GetScreen()
                screen.Close()
            end if
            exit while ' 无论选择结果,结束对话框事件监听
        end if
    end while
end sub

3. 原有main.brs无需额外修改

原代码中的事件循环已经可以处理roSGScreenEvent的屏幕关闭事件,当调用screen.Close()后,msg.IsScreenClosed()会触发,自动退出事件循环完成应用退出流程。

关键要点

  • roMessageDialog是Roku原生组件,适合快速实现简单确认类交互
  • OnKeyEvent返回true会覆盖系统默认的返回键行为,确保对话框优先触发
  • 对话框必须绑定场景的消息端口,才能正确接收用户选择的回调事件

内容的提问来源于stack exchange,提问作者user19810276

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:32:41