正确使用 addChild

Posted

技术标签:

【中文标题】正确使用 addChild【英文标题】:Correct use of addChild 【发布时间】:2012-10-17 07:31:12 【问题描述】:

我是编码和 AS3 的新手。我正在阅读有关使用 AS3 向舞台添加内容的内容,并了解了 addChild 方法。阅读更多我发现有不同的使用方法。我还读到有些方法比其他方法更好,有些方法根本不好,最好避免。

不过,我不相信这些消息来源。作为一个编码新手,我来寻求帮助,***。我即将开始一个 addChild 繁重的项目,我想用正确的实现开始它。我相信你,所以让我问你:addChild 的正确用法是什么?

我只是想在舞台上添加东西,但我读到直接将它们添加到舞台上并不好(尽管没有进一步的争论)。

stage.addChild()
this.addChild()
addChild()

还有其他方法吗?我应该使用哪一个?

感谢您的宝贵时间。 :)

【问题讨论】:

【参考方案1】:

作为显示列表层次结构中所有显示对象的***容器,无论在运行时加载多少 SWF 文件,都只有一个Stage。所以,一般来说,对象根本不应该直接添加到舞台上。 Stage 应该包含的唯一对象是根对象。

一般情况下,您不应使用:stage.addChild()

DisplayObject添加到显示列表应该在DisplayObjectContainer的范围内执行。

每个 SWF 文件都有一个关联的 ActionScript 类,称为 SWF 文件的主类,它扩展了显示对象。您可以从这个类或层次结构中的任何子类调用addChild()

以下是相等的,并且会在当前显示对象容器的范围内添加一个子对象。

this.addChild()
addChild()

this 关键字明确定义范围;但是,在离开时通常是隐含的。

虽然通过 addChild() 添加的显示对象被添加到所有其他子项的前面(顶部),但要将子项添加到特定索引位置,请使用 addChildAt() 方法。

参考资料:

Display Programming Basics of display programming Adding display objects to the display list

【讨论】:

如果我在全局范围内使用 this.addChild() ,我是否将元素添加到舞台? 不,有global variable scope,但在那个上下文中没有this指针指向舞台。 不过,肯定还有更多。现在我正在尝试将addChild() 转换为ViewStack,它似乎没有任何效果。也许是 SDK? (Flex 3.5) @Opux - Flex 4 引入了 Spark 架构,您可以在其中使用 addVisualElement() 添加到显示列表中。 Flex 3 MX 架构使用addChild();然而,除了显示列表编程之外,还有一些复杂性。在 Flex MXML 中,组件对子元素使用 mxmlContent 属性。例如,ViewStack 不接受任何 DisplayObject

以上是关于正确使用 addChild的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用 Composer 安装 Laravel 扩展包

如何正确使用 Composer 安装 Laravel 扩展包

如何正确强制正确使用类方法?

如何正确使用 Composer 安装 Laravel 扩展包

C#注释的正确的使用方法有哪些?

如何正确的使用QWebEngineView