【问题标题】:Is It Possible to scene access from one file to another file in ROKU?是否可以在 ROKU 中从一个文件到另一个文件的场景访问?
【发布时间】:2019-08-23 16:12:01
【问题描述】:

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

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

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

有什么方法可以访问吗?

已编辑帖子:

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

【问题讨论】:

    标签: roku brightscript


    【解决方案1】:

    实际上,代码中发生了什么,您在 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

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

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

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

    【讨论】:

    • 谢谢,您的第三点是我在 KetboardDialogExample 文件中编写代码 onkeyevent 代码转移到 actionsToBePerformedOnVisibilityChange。
    • 它应该可以工作,你只需要妥善处理。可能是你错过了一些东西。如果您愿意,您可以共享完整的代码,并制作您的需求文档(例如从哪里导航到哪里,所需的焦点对象等)。明天,我会试着调查一下。
    • 对不起,我的错误它正在工作。
    • @NikunjChaklasiya,太好了。
    • 我成功地保持专注。但是钢铁一期像以前一样我编辑我的帖子并添加一张错误图片。
    【解决方案2】:

    是的,这是可能的, 在您的 m.keypanel 的 .xml 文件中(我看到该组件的 xml 文件可能被命名为“KeyboardDialogExample”),将您的值公开给接口,如下所示:

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

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

    【讨论】:

    • 我为常见的两个文本框和两个按钮创建了一个 xml 和 brs,我在 init() 中找到。我扩展了 Group 的工作,发现就像我的问题一样。但它没有显示我在另一个文件中扩展任务或场景。我没有在我的 XML 中使用 m.keypanel("KeyboardDialogExample") 是必需的吗?
    • 对不起,我不确定我是否理解正确。您能否将代码发布在某处,以便我检查并尝试给您更具体的答案?谢谢! :-) p.s 我还稍微编辑了我的答案以避免混淆。
    • github.com/chaklasiyanikunj/KeyboardDialogExample/tree/master 在这里我上传了所有 3 个文件。我打电话给m.keypanel = m.panelset.createChild("KeyboardDialogExample") 是 panelset.brs init()。
    • 好的,知道了。现在你真的想用 m.keypanel 做什么?您能否更具体一点:“是否可以从一个文件到另一个文件的场景访问?”您想实现的具体目标是什么?
    • @U. Mitic 我按下 panelSet.brs 文件中的任意键来打开一个keyboarddialogexample 文件功能。并访问所有函数或值。
    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    相关资源
    最近更新 更多