我使用明亮的脚本创建了两个文件。两者都在一个场景中扩展,因此我访问一个文件中的第二个文件。但是不行。
我将一个文件用于扩展场景,将另一个文件用于组。这在下面的代码中起作用。
m.keypanel = m.panelset.createChild("KeyboardDialogExample")
有什么方法可以访问它?
我在“向上”或“向下”键中保持“焦点”。它正在工作,并且如果保持电子邮件焦点,则打开对话框以按“确定”。但是给这个错误。我单独使用了,它成功工作。
答案 0 :(得分:1)
实际上,代码中发生的事情是在init()函数中创建一个“ KeyboardDialogExample”子级,这很好。问题在于为那个孩子设定焦点。基本上,init()函数在解析相应的xml文件后立即被调用,并用于缓存Node和设置字段观察器。因此,不应将此功能用于将焦点放在另一个组件上。默认情况下,第二件事“组”节点不可聚焦。可以使它成为可聚焦的对象,但是几乎不需要它一直都在,因为可以用另一种更简单的方式实现相同的功能。以下是我对您的要求的建议---
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
在您想要的任何按键事件上,并将焦点设置在主场景的某个字段上。
尝试这样编码。之后,您可以在两个文件之间跳转。
(注意:-,您可能会想知道为什么我们要重复设置可见性为是和否。这是因为观察者通常在前一个值发生变化时工作。代码,如果我们不会在主场景的init()函数中将“ keyboaddialogexample”的可见性设置为false,则在将其更改为true时,它不会观察该值,因为默认情况下为true。) 希望,我回答了你在看什么。
答案 1 :(得分:0)
是的, 在您的m.keypanel的.xml文件中(我看到该组件的xml文件可能命名为“ KeyboardDialogExample”),将您的值暴露给接口,如下所示:
<interface>
<field id="valueforuri" type="string" />
<interface>
现在,您可以从最初创建m.keypanel组件的文件中调用m.keypanel.valueforuri =“ www.google.com”。 您还可以从另一个文件/组件中发送要在m.keypanel中触发的功能。 请检查link,了解您如何执行此操作。