在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 文件后立即调用,用于缓存节点和设置字段观察器。所以这个函数不应该被用来在另一个组件上设置焦点。第二件事默认情况下组节点不可聚焦。它可以成为可聚焦的,但几乎所有时候都不需要,因为可以用另一种更简单的方式实现相同的功能。以下是我对您的要求的建议---
- 先替换
m.keypanel = m.panelset.createChild("KeyboardDialogExample")
m.keypanel.setFocus(true)
和
m.keypanel = CreateObject("roSGNode", "KeyboardDialogExample")
m.keypannel.visible = false
m.top.appendChild(m.keypanel)
这是访问其他组件的推荐方式。
现在将可见性设置为 true,在您想要的任何按键事件上-
m.keypannel.visible = true
在"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
如果你想从"KeyboardDialogExample"回到之前的状态,只需要
m.keypannel.visible = false
在你想要的任何按键事件上,并将焦点设置在主场景的某个字段上。
尝试像这样编写代码。之后你可以在两个文件之间跳转。
(注意:- 你可能会奇怪,为什么我们要反复设置可见性 true 和 false。这是因为观察者通常在值与前一个值发生变化时工作。比如上面的代码,如果我们在主场景的init()函数中不将"keyboaddialogexample"的可见性设置为false,那么当我们将其改为true时,它就不会观察到这个值,因为默认是true .)
希望,我回答了你在看什么。
我使用 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 文件后立即调用,用于缓存节点和设置字段观察器。所以这个函数不应该被用来在另一个组件上设置焦点。第二件事默认情况下组节点不可聚焦。它可以成为可聚焦的,但几乎所有时候都不需要,因为可以用另一种更简单的方式实现相同的功能。以下是我对您的要求的建议---
- 先替换
m.keypanel = m.panelset.createChild("KeyboardDialogExample")
m.keypanel.setFocus(true)
和
m.keypanel = CreateObject("roSGNode", "KeyboardDialogExample")
m.keypannel.visible = false
m.top.appendChild(m.keypanel)
这是访问其他组件的推荐方式。
现在将可见性设置为 true,在您想要的任何按键事件上-
m.keypannel.visible = true
在"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
如果你想从"KeyboardDialogExample"回到之前的状态,只需要
m.keypannel.visible = false
在你想要的任何按键事件上,并将焦点设置在主场景的某个字段上。
尝试像这样编写代码。之后你可以在两个文件之间跳转。
(注意:- 你可能会奇怪,为什么我们要反复设置可见性 true 和 false。这是因为观察者通常在值与前一个值发生变化时工作。比如上面的代码,如果我们在主场景的init()函数中不将"keyboaddialogexample"的可见性设置为false,那么当我们将其改为true时,它就不会观察到这个值,因为默认是true .) 希望,我回答了你在看什么。