roku - 是否可以在 ROKU 中从一个文件到另一个文件的场景访问?
问题描述
我使用明亮的脚本创建了两个文件。两者都在场景中扩展,因此我访问了一个文件中的第二个文件。但是不行。
我使用一个文件来扩展场景,另一个文件用于组它通过下面的代码工作。
m.keypanel = m.panelset.createChild("KeyboardDialogExample")
有什么方法可以访问它吗?
我保持焦点在向上或向下键。它正在工作,如果保持电子邮件焦点,然后我打开对话框按确定。但是给出这个错误。我单独使用它成功地工作。
解决方案
实际上,代码中发生了什么,您在 init() 函数中创建了一个“KeyboardDialogExample”子级,这很好。问题在于为那个孩子设定焦点。基本上 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() 函数中添加可见性观察者为--
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。)希望,我回答了你在看什么。
推荐阅读
- python - Pylint 无法识别 gmpy2 成员
- c - 此故障是由取消引用高值地址引起的
- r - 识别数据框各列中的相似字符串
- javascript - 如何创建一个从结束的 for 循环的索引末尾继续的循环?
- amazon-web-services - 如果 CloudFormation 失败,是否可以重新运行操作?
- node.js - 尽管使用正确的语法,但无法在猫鼬嵌套对象 find() 中获取预期的数据
- r - 为数据框的每一列创建一个图并创建一个图列表
- spring - 无法在抽象父类中生成自动装配 bean
- python - Python:如何从输入的出生日期和当前日期中找到年龄?
- python - 如何在 Flask 中使用 get 参数构建动态 url