【问题标题】:Difference Between m and m.top in brightscript?brightscript中m和m.top的区别?
【发布时间】:2021-08-19 01:30:00
【问题描述】:

Roku 论坛上提供了这种差异。但我不明白。有谁知道这个区别及其属性吗?

【问题讨论】:

    标签: roku brightscript


    【解决方案1】:

    我会尽量简单解释:

    “m”是关联数组的图像。 m.top 将是该关联数组的默认元素。 像这样的:

    m = {top : "value for top element"}
    

    所以现在您可以调用“m.top”并获取它的值。

    每个 xml 组件在创建时都添加了自己的“m”。

    通常 - Brightscript 中的“m.top”用于引用其中使用的 xml 组件。

    这就是您可以这样做的原因: m.CustomComponent = m.top.findNode("CustomComponent")

    这又会返回 m.top 的子组件(ID 为“自定义组件”)。

    这还将创建一个变量 - m.CustomComponent 具有组件文件范围。

    您还可以向 .xml 组件添加接口。 为了访问它,您将使用:m.top.nameOfInterface。

    要创建具有接口值的组件范围的变量,您可以使用:

    m.interfaceValue = m.top.nameOfInterface

    简而言之: m.CustomComponent 或 m.interfaceValue 是具有组件范围的变量。 而“m”用于区分各种变量作用域。

    m.top 是对它自己的组件的引用。

    一般来说,这个概念对于数据范围很重要。 请检查此文件(尤其是在“组件范围”部分)以了解更多信息: https://developer.roku.com/en-gb/docs/developer-program/core-concepts/data-scoping.md

    【讨论】:

      【解决方案2】:

      让我们试着让它更简单。当您使用“m.something”时,意味着您正在引用“.brs”文件中定义的组件变量。当您使用“m.top.something”时,意味着您正在引用“.xml”文件中定义的组件或字段。 “m”就像java中的“this”指针。

      【讨论】:

        【解决方案3】:

        m.top 表示节点,也称为组件。

        在brightscript中,你有普通的普通(就像在任何编程语言中一样),但你也有“nodes”(又名“components” >")。

        节点就像游戏引擎中的游戏对象。

        “米。”无非就是“类”。所以如果你有三个变量 x, y, z 然后是 m.x, m.y, m.z。很简单。

        但是 m.top。与“类”无关,它是组件。它包含与组件相关的所有内容 - 例如样式、大小、子组件等。

        假设您在brightscript 中有一个“普通”类,它“只是一个类”而不是一个组件——所以“main.brs”就是一个例子。在这种情况下, m.top 是没有意义的。试试

        ?"check", Type(m.top)
        

        在 main.brs 中。它只会崩溃或给出错误或警告。

        相反,放

        ?"check", Type(m.top)
        

        在任何组件中。你会看到它告诉你

        check         roSGNode
        

        召回m.top与变量无关:

        你可以写

        m.x = 13
        m.y = 14
        

        没问题。这些是普通变量(字符串、整数等)。像使用任何语言一样将它们用作变量。 “米。”只是一种访问变量的方法。

        但 m.top 与变量无关 - m.top 是一个组件

        如果你试试这个

        m.top.x = 13
        m.top.y = 14
        

        它只会崩溃或给出错误或警告。

        您可以向组件添加字段。 (这样做有点不寻常,通常它们只是在 xml 文件中设置。)例如

        m.top.addFields({ unusualField: 13 })
        

        然后你可以...

        ?"check", m.top.getField("unusualField")
        

        它会打印出整数 13。

        但是unusualField是一个字段,和变量无关。

        { 令人困惑的是,brightscript 在字段中添加了“点访问”糖。因此,要访问一个字段,您实际上可以将m.top.styles 写为m.top.getField("styles") 的简写。不幸的是,它们使用了与变量相同的分隔符,一个点。但请注意,它与变量无关。 m.top 是一个组件,它有字段。不涉及变量。 }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-22
          • 2020-10-20
          • 2018-09-30
          • 1970-01-01
          相关资源
          最近更新 更多