gpt4 book ai didi

roku - 使用明亮的脚本单击“保存”按钮后重定向到主页?

转载 作者:行者123 更新时间:2023-12-04 02:28:48 26 4
gpt4 key购买 nike

  • 我在明亮的脚本中创建了登录屏幕和设置 URL 屏幕,在登录屏幕中使用凭据用户名、密码和在设置 URL 屏幕中设置 URL,使用两个按钮保存和设置。

  • 这里只是我的登录屏幕:
  • 登录画面

    '''''''''''''''''''''''''''''''''''''''''''''''' '

    用户名: 文本框 1

    密码: 文本框 2

    保存 设置

    ''''''''''''''''''''''''''''''''''''''''''''''' '

  • 我点击设置按钮打开设置 URL 屏幕它在这里:
  • 网址画面

    '''''''''''''''''''''''''''''''''''''

    网址: 文本框3

    保存

    '''''''''''''''''''''''''''''''''''

  • 我在设置 URL 屏幕中写入设置 URL,然后单击保存按钮。现在保存设置 URL 后,我想再次导航回登录屏幕。我将所有三个凭证都存储在 roRegistrySection 中。这是一个成功的存储。但是登录屏幕和设置 URL 屏幕之间的导航无法正常工作。当我点击保存按钮时,它会打开主屏幕。任何人都知道如何在两个屏幕之间导航。

    预期结果:按照以下步骤。
  • 首先,我单击设置按钮在文本框中输入 URL。再次单击保存按钮后,导航回登录屏幕。
  • 在登录屏幕中,我有两个文本框。输入用户名和密码后,我点击保存按钮,然后重定向到主页,在 roRegistrySection 中存储三个值。

  • 任何人都知道问题。

    最佳答案

    检查这个 getting-started-with-brightscript-screen-navigation

    实现一个简单的导航菜单
    下面的屏幕截图显示了许多 Roku channel 的典型登录页面。列表屏幕组件是实现通过 channel 内容驱动导航的简单菜单的常用方法。每个列表项都可以代表一个视频流派、一种音乐风格、一组设置或您想要在 channel 中分组的任何其他内容类别。 In a typical channel, when a list item is selected, the channel navigates to a new screen.在我们的示例中,列表屏幕允许用户浏览假设餐厅的早餐和午餐菜单。选择其中一个项目会显示该特定膳食类别的详细产品列表。

    选择列表项时导航到新屏幕的关键是处理列表屏幕的 isListItemSelected 事件。 msg.GetIndex() 返回的索引包含所选列表项的从零开始的索引。您的 channel 可以将每个列表项索引映射到一个唯一的屏幕并导航到该屏幕以响应 isListItemSelected 事件。有几种方法可以实现这一点。最简单的方法是在调用屏幕的事件循环中使用 if 语句方法来测试所选索引并调用正确的函数:

    while (true)
    msg = wait(0, port)
    if (type(msg) = "roListScreenEvent")
    if (msg.isListItemSelected())
    index = msg.GetIndex()
    if (index = 0)
    ShowBreakfastMenu()
    else if (index = 1)
    ShowLunchMenu()

    endif
    endif
    endif
    end while

    另一种更复杂但更简洁的方法是创建一个函数引用数组。
    menuFunctions = [ShowBreakfastMenu, ShowLunchMenu,…]
    while (true)
    msg = wait(0, port)
    if (type(msg) = "roListScreenEvent")
    if (msg.isListItemSelected())
    menuFunctions[msg.GetIndex()]() ‘Call function based on index
    endif
    endif
    end while

    理解此代码如何工作的关键在于 BrightScript 函数引用概念。函数引用只是给定函数的名称。函数引用可以分配给变量,用作数组元素,甚至传递给其他函数。可以使用函数调用运算符“()”调用对应于函数引用的函数。以下是通过引用调用名为 doSomething 的函数的一些示例:
    Function doSomething() as void
    ...
    End Function
    doSomethingReference = doSomething
    ‘Call doSomething by reference
    doSomethingReference()
    references = [doSomething, …]

    ‘我们也可以将函数引用放在数组中
    references0 '通过数组元素函数引用调用 doSomething
    考虑到这一点,让我们回到在 ListView 屏幕中实现菜单的第二种方法。数组 menuFunctions 包含每个 channel 的屏幕创建函数的名称。它们的顺序与它们在关联列表屏幕中对应的列表项的顺序相同。然后,当列表屏幕的事件循环中处理 isListItemSelected 事件时,我们从 menuFunctions 数组中获取相应的函数名称。然后在正确的数组元素上使用“()”运算符通过引用调用该函数:
    menuFunctions[msg.GetIndex()]() '基于索引的调用函数
    在示例 channel 中,我们使用函数引用方法。要查看菜单项的实际作用,请单击早餐菜单项,您将在简单的海报屏幕中看到详细的早餐菜单:

    单击午餐菜单项显示详细的午餐菜单,该菜单使用网格屏幕实现:

    深度导航
    到目前为止,我们已经了解了如何使用列表屏幕将简单的类别导航构建到 channel 中。从上面的海报或网格屏幕等屏幕移动到 channel 中的其他屏幕也同样容易。只需处理屏幕事件循环中的 isListItemSelected 事件即可检测何时选择了项目并做出适当响应。

    在示例 channel 中,您可以单击早餐菜单海报屏幕中的任何项目以显示详细信息屏幕,其中包含有关所选项目的更多信息。此屏幕(也称为“跳板”屏幕)的示例如下所示:

    此屏幕右侧的两个按钮演示了另一种 BrightScript 导航技术。 When one of these buttons is selected, the details screen receives an isButtonPressed event.随事件发送的消息包含所选按钮的索引。与列表、海报和网格屏幕项目索引一样,此按钮索引可用于控制 channel 响应按钮按下的操作,包括导航到新屏幕、打开对话框和其他操作。
    while (true)
    msg = wait(0, port)
    if (type(msg) = "roSpringboardScreenEvent")
    if (msg.isButtonPressed())
    buttonIndex = msg.GetIndex()
    'Open a new screen corresponding to the button index

    endif
    endif
    end while

    为了尝试最小化示例 channel 下载的大小,只有早餐和午餐列表屏幕项目打开海报或网格屏幕。此外,只有早餐菜单海报屏幕项目可以点击打开详细信息屏幕。您可以轻松地使用这两个类别作为指南来完成自己的 channel 。或者您可以直接使用代码开始在您自己的 channel 中导航。快乐编码!

    关于roku - 使用明亮的脚本单击“保存”按钮后重定向到主页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56753908/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com