正确使用 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 扩展包