首页 > 解决方案 > 是否可以在 ROKU 中从一个文件到另一个文件的场景访问?

问题描述

我使用明亮的脚本创建了两个文件。两者都在场景中扩展,因此我访问了一个文件中的第二个文件。但是不行。

我使用一个文件来扩展场景,另一个文件用于组它通过下面的代码工作。

m.keypanel = m.panelset.createChild("KeyboardDialogExample")

有什么方法可以访问它吗?

编辑帖子: 在此处输入图像描述

我保持焦点在向上或向下键。它正在工作,如果保持电子邮件焦点,然后我打开对话框按确定。但是给出这个错误。我单独使用它成功地工作。

标签: rokubrightscript

解决方案


实际上,代码中发生了什么,您在 init() 函数中创建了一个“KeyboardDialogExample”子级,这很好。问题在于为那个孩子设定焦点。基本上 init() 函数在解析相应的 xml 文件后立即调用,用于缓存节点和设置字段观察者。所以这个函数不应该被用来设置焦点在另一个组件上。第二件事组节点默认情况下是不可聚焦的。它可以变得可聚焦,但几乎所有时候都不需要它,因为可以通过另一种更简单的方式实现相同的功能。以下是我对您的要求的建议---

  1. 首先更换

m.keypanel = m.panelset.createChild("KeyboardDialogExample") m.keypanel.setFocus(true)

m.keypanel = CreateObject("roSGNode", "KeyboardDialogExample")
m.keypannel.visible = false
m.top.appendChild(m.keypanel)

它是访问其他组件的推荐方式。

  1. 现在,在您想要的任何按键事件上将可见性设置为 true -
    m.keypannel.visible = true

  2. 在“KeyboardDialogExample”的 init() 函数中添加可见性观察者为--

    m.top.observeField("visible", "actionsToBePerformedOnVisibilityChange")

创建一个名为“actionsToBePerformedOnVisibilityChange”的函数(或您想要保留的任何名称,也可以在 observeField 行中更改它),然后添加您想要对该组的可见性执行的任何操作的代码。

function actionsToBePerformedOnVisibilityChange()
    if m.top.visible = true
     'add the action code here. 
    end if
end function
  1. 如果您想从“KeyboardDialogExample”返回到上一个,只需将

    m.keypannel.visible = false

在您想要的任何按键事件上,并将焦点设置在主场景的某个领域。

尝试像这样编写代码。之后,您可以在两个文件之间跳转。

(注意:-你可能想知道,为什么我们要重复设置可见性 true 和 false。这是因为观察者通常会在前一个值发生变化时工作。例如,在上面的代码中,如果我们不设置可见性在主场景的 init() 函数中将“keyboaddialogexample”设置为 false,当我们将其更改为 true 时,它​​不会观察到该值,因为默认情况下它是 true。)希望,我回答了你在看什么。


推荐阅读