Nik*_*iya 12 roku brightscript
这只是我的登录屏幕:
'''''''''''''''''''''''''''''''''''''''''''''''' '
用户名: TextBox1
密码: TextBox2
保存 设置
'''''''''''''''''''''''''''''''''''''''''''''''' '
我单击设置按钮打开设置URL屏幕,它在这里:
''''''''''''''''''''''''''''''''''''
网址: TextBox3
保存
''''''''''''''''''''''''''''''''''''
我在设置URL屏幕中写入设置URL,然后单击“保存”按钮。现在保存设置URL后,我想再次导航回登录屏幕。我将所有三个凭证都存储在roRegistrySection中。这是一家成功的商店。但是,登录屏幕和设置URL屏幕之间的导航无法正常工作。当我单击保存按钮时,它将打开主屏幕。任何人都知道如何在两个屏幕之间导航。
预期结果:按照以下步骤。
首先,我单击设置按钮以在文本框中输入URL。再次单击保存按钮后,导航回到登录屏幕。
在登录屏幕中,我有两个文本框。输入用户名和密码后,我单击“保存”按钮,然后使用roRegistrySection中的三个值存储重定向到主页。
任何人都知道问题。
检查此Brightscript-screen-navigation 入门
\n\n实现简单的导航菜单\n下面的屏幕截图显示了许多 Roku 频道的典型登陆页面。列表屏幕组件是实现驱动频道内容导航的简单菜单的常用方法。每个列表项都可以代表视频流派、音乐风格、一组设置或您想要在频道中分组的任何其他内容类别。在典型的频道中,当选择列表项时,频道导航到新屏幕。在我们的示例中,列表屏幕允许用户浏览假设餐厅的早餐和午餐菜单。选择其中一项会显示该特定膳食类别的详细产品列表。
\n\n选择列表项时导航到新屏幕的关键是处理列表 screen\xe2\x80\x99s isListItemSelected 事件。msg.GetIndex() 返回的索引包含所选列表项的从零开始的索引。您的频道可以将每个列表项索引映射到唯一的屏幕,并导航到该屏幕以响应 isListItemSelected 事件。有几种方法可以实现这一点。最简单的方法是在调用 screen\xe2\x80\x99s 事件循环中使用 if 语句方法来测试所选索引并调用正确的函数:
\n\nwhile (true)\n msg = wait(0, port)\n if (type(msg) = "roListScreenEvent")\n if (msg.isListItemSelected())\n index = msg.GetIndex()\n if (index = 0)\n ShowBreakfastMenu()\n else if (index = 1)\n ShowLunchMenu()\n \xe2\x80\xa6\n endif\n endif\n endif\nend while\nRun Code Online (Sandbox Code Playgroud)\n\n另一种更复杂但更简洁的方法是创建函数引用数组。
\n\nmenuFunctions = [ShowBreakfastMenu, ShowLunchMenu,\xe2\x80\xa6]\nwhile (true)\n msg = wait(0, port)\n if (type(msg) = "roListScreenEvent")\n if (msg.isListItemSelected())\n menuFunctions[msg.GetIndex()]() \xe2\x80\x98Call function based on index\n endif\n endif\nend while\nRun Code Online (Sandbox Code Playgroud)\n\n理解这段代码如何工作的关键在于 BrightScript 函数引用概念。函数引用只是给定函数的名称。函数引用可以分配给变量,用作数组元素,甚至传递给其他函数。可以使用函数调用运算符 \xe2\x80\x9c()\xe2\x80\x9d 来调用与函数引用对应的函数。以下是通过引用调用名为 doSomething 的函数的一些示例:
\n\nFunction doSomething() as void\n ...\nEnd Function\ndoSomethingReference = doSomething\n\xe2\x80\x98Call doSomething by reference\ndoSomethingReference()\nreferences = [doSomething, \xe2\x80\xa6] \nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\x98我们还可以将函数引用放在数组中\nreferences0 \xe2\x80\x98通过数组元素函数引用调用doSomething\n考虑到这一点,让\xe2\x80\x99s回到第二种方法来实现列表视图屏幕中的菜单。数组 menuFunctions 包含每个通道\xe2\x80\x99s 屏幕创建函数的名称。它们的顺序与它们在关联列表屏幕中对应的列表项的顺序相同。然后,当在列表 screen\xe2\x80\x99s 事件循环中处理 isListItemSelected 事件时,我们从 menuFunctions 数组中获取相应的函数名称。然后在正确的数组元素上使用 \xe2\x80\x9c()\xe2\x80\x9d 运算符通过引用调用该函数:
\n\nmenuFunctions[msg.GetIndex()]()\xe2\x80\x98基于索引调用函数\n在示例通道中我们使用函数引用的方式。要查看菜单项的实际功能,请单击“早餐”菜单项,您\xe2\x80\x99将在简单的海报屏幕中看到详细的早餐菜单:
单击午餐菜单项会显示详细的午餐菜单,该菜单是使用网格屏幕实现的:
\n\n更深入的导航\n到目前为止,我们\xe2\x80\x99已经了解了如何使用列表屏幕将简单的类别导航构建到频道中。从上面的海报或网格屏幕等屏幕转移到频道中的其他屏幕也同样容易。只需处理 screen\xe2\x80\x99s 事件循环中的 isListItemSelected 事件即可检测何时选择项目并做出适当响应。
\n\n在示例频道中,您可以单击早餐菜单海报屏幕中的任何项目以显示详细信息屏幕,其中包含有关所选项目的更多信息。该屏幕的示例(也称为 \xe2\x80\x9cspringboard\xe2\x80\x9d 屏幕)如下所示:
\n\n该屏幕右侧的两个按钮演示了另一种 BrightScript 导航技术。当选择这些按钮之一时,详细信息屏幕会收到 isButtonPressed 事件。与事件一起发送的消息包含所选按钮的索引。与列表、海报和网格屏幕项目索引一样,此按钮索引可用于控制通道响应按钮按下而执行的操作,包括导航到新屏幕、打开对话框和其他操作。
\n\nwhile (true)\n msg = wait(0, port)\n if (type(msg) = "roSpringboardScreenEvent")\n if (msg.isButtonPressed())\n buttonIndex = msg.GetIndex()\n \'Open a new screen corresponding to the button index\n \xe2\x80\xa6\n endif\n endif\nend while\nRun Code Online (Sandbox Code Playgroud)\n\n为了尝试最小化示例频道下载的大小,仅早餐和午餐列表屏幕项目打开海报或网格屏幕。此外,只有早餐菜单海报屏幕项目可以点击打开详细信息屏幕。您可以轻松地使用这两个类别作为指南来自行完成频道。或者您可以直接使用代码来开始在您自己的频道中导航。快乐编码!
\n