在ROKU中是否可以从一个文件场景访问到另一个文件?

Is It Possible to scene access from one file to another file in ROKU?

我使用 bright 脚本创建了两个文件。两者都在一个场景中扩展,所以我在一个文件中访问第二个文件。但是不行。

并且我将一个文件用于扩展场景,将另一个文件用于组它正在通过以下代码工作。

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

有什么方法可以访问吗?

已编辑Post:

我将 Focus 保持在 Up 或 Down 键中。它正在工作,如果保持电子邮件焦点,然后我打开对话框按确定。但是给出这个错误。我单独用了 成功了

是的,这是可能的, 在你的 m.keypanel 的 .xml 文件中(我看到那个组件的 xml 文件可能被命名为 "KeyboardDialogExample"),将你的值暴露给接口,像这样:

<interface>
    <field id="valueforuri" type="string" />
<interface>

现在您可以从最初创建 m.keypanel 组件的文件中调用 m.keypanel.valueforuri = "www.google.com"。 您还可以从另一个 file/component 发送要在 m.keypanel 中触发的函数。 请检查 link 以了解如何执行此操作。

实际上,代码中发生了什么,您在 init() 函数中创建了一个 "KeyboardDialogExample" child,没问题。问题在于为 child 设置焦点。基本上 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()函数中添加可见性观察器as--

    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 .) 希望,我回答了你在看什么。