【问题标题】:How to use Interface in brightscript for functions如何在brightscript中为函数使用接口
【发布时间】:2018-06-26 05:29:41
【问题描述】:

我希望一个函数需要使用接口实现模型来调用。我已经读过 roku 规定在brightscript 文档的接口部分中有一个功能。 所以我尝试了但失败了。谁能帮帮我?

【问题讨论】:

  • 请添加您尝试启动的代码。
  • 是的,这个问题需要更多细节才能回答。建议显示尝试过的示例(在代码中)。
  • 在我的例子中,a.xml 中有一个组件,它是 a.brs 中的脚本。在脚本中,我在接口和实现部分都有一个方法 foo() 。现在我在组件 b 中添加 a.brs 并尝试访问 foo() 方法,我得到了错误
  • @ganka 好的,但是您可以在问题中发布实际代码和错误(编辑问题)吗?否则这个问题无法回答。
  • U.Mitic 一针见血。调用函数时传递的参数应该包含在关联数组或数组中。这是有关此的更多信息。它使整个过程相当乏味,所以我通常不使用这些。 sdkdocs.roku.com/display/sdkdoc/…

标签: roku brightscript


【解决方案1】:

这是在接口中实现函数的方式:

例如,创建一个名为“audioPlayer”的自定义屏幕,并在 audioPlayer.xml 文件中添加:

<interface>
    <function name="doSomething" />
</interface>

在audioPlayer.brs文件中声明“doSomething”函数:

Function doSomething(param as String)
    print param
End Function

现在在您的 HomeScene.xml 中添加这个自定义创建的“audioPlayer”屏幕/组件,并在 HomeScene.brs init() 函数中添加:

m.audioPlayer = m.top.findNode("audioPlayer")

您可以使用以下代码从 HomeSceene.brs 调用您的 doSomething() 函数:

param = "Do Androids Dream of Electric Sheep?"
m.audioPlayer.callFunc("doSomething",param)

【讨论】:

  • 很好,很简单,并通过一个清晰的工作示例来回答。
  • @U.mitic 你好抱歉,我也阅读了你的回答和你的博客,但我在这里遇到了一些问题Interface not a member of BrightScript Component (runtime error &amp;hf3) in pkg:/components/ChannelList.brs(19) 019: m.WisePanel.callFunc("doSomething",param)
  • 我的另一个尝试在这里Interface not a member of BrightScript Component (runtime error &amp;hf3) in pkg:/components/PanelSet.brs(12) 012: m.KeyboardDialogExample.callFunc("doSomething",param) 使用不同的两个文件。
  • @NikunjChaklasiya - 在我看来,您没有在 m.WisePanel 的 .xml 文件中的 m.WisePanel 接口中添加“doSomething”功能。
  • 就我而言,我无法通过 findNode 函数访问组件。它打印为无效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多