我在Roku Brightscript的屏幕导航中遇到了一些问题。任何人,请帮助我如何在我的Roku项目中管理5-6个屏幕。我想从1个屏幕导航到2个屏幕,也想从那个屏幕返回。这是我在过去6个月中遇到的一些主要问题。我不能做这件事。你方的一些帮助帮助我理解。
目前,我已经尝试了以下步骤
1-如果我想转到2个屏幕,那么我将执行以下部分
m.top.AppendChild(m.secondscreen)
m.secondscreen.setFocus(true)
m.secondscreen.visible="true"2-当我在第二个屏幕上单击back键时,我将返回false,这样它就会返回到第一个屏幕,在这里我将这样做
m.secondscreen.setFocus(false)
m.secondscreen.visible="false"
return true在这里,它将来到第一个屏幕。所以像这样,我将转到所有页面。但我知道这不是Roku的确切过程。所以我在做this.and时遇到了很多困难,我不能按照上面的步骤从5个屏幕移动到1个屏幕,所以如果你have.it,请任何人告诉我一些例子,我将不胜感激。
发布于 2019-06-14 06:19:27
我假设您的m.secondscreen是一个"roSGScreen“组件,如果是这样,那么您是正确的。一个Roku场景图应用程序应该只创建一个"roSGScreen“。
“屏幕”的概念是令人困惑的,因为您可以创建许多组件,这些组件可以被认为是“屏幕”,而实际上它们只是视图。您的唯一场景应该控制活动视图(子组件,而不是roSGScreens),并可以根据用户操作根据需要附加/分离或显示/隐藏子组件。
从技术上讲,我非常确定你想要管理5个视图,而不是5个屏幕。
我建议花一些时间阅读SDK文档教程中的示例应用程序,以了解更多相关信息。
发布于 2019-07-26 06:50:39
我在一些已发布的通道上使用了Roku提供的视图堆栈组件。
我鼓励你使用它,它将使屏幕处理变得更容易。
可能一开始,设置可能会很痛苦,但肯定的是,随着应用程序的不断增长,它的可伸缩性更强。
要显示屏幕,您可以这样调用它:
viewOne = CreateObject("roSGNode", "customScreen")
m.top.ComponentController.CallFunc("show", {
view: viewOne
})要手动关闭屏幕,您只需将属性" close“更改为true。
viewOne.close = true您可以继续调用show方法,它会将所有这些视图追加到堆栈中。
您还可以通过让组件控制器处理您的屏幕堆栈来获得一些功能:
·currentView -链接到ViewStack当前显示的视图(此视图表示ViewStack显示的视图。
·allowCloseChannelOnLastView -如果为true,则在按下back按钮或前一个视图将视图的close字段设置为true时关闭通道
·allowCloseLastViewOnBack -如果为true,则关闭当前视图,用户可以通过新视图的wasClosed回调打开另一个视图
注意,如果显示另一个没有使用ViewStack的视图,它将不会反映在堆栈上,或者可以被当前视图引用访问。)
===============UPDATE==========
使用原始问题的示例代码(假设您设置了视图堆栈):
' To show the second screen
m.top.ComponentController.CallFunc("show", {
view: m.secondView
})
' to show another view on top.
m.thirdView = CreateObject("roSGNode", "thirdView")
m.top.ComponentController.CallFunc("show", {
view: m.thirdView
})
' to close third screen and go back to second screen
m.thirdView.close = true发布于 2019-06-13 16:54:52
在你的代码中添加一件事:
m.secondscreen.close = true return true
Roku导航首先需要关闭屏幕。第一个屏幕关闭后,第二个屏幕将打开。绝对是工作上的事。
https://stackoverflow.com/questions/56576199
复制相似问题