在Flex中添加动态DisplayObject

时间:2010-01-05 15:28:35

标签: flex flex3 adobe

我正在使用

将DisplayObject添加到Canvas
ContentContainer.addChild(c);

其中ContentContainer是我的Canvas对象,c是我在运行时创建的DisplayObject

其中一些DisplayObject也有自己的子节点,这些子节点在DisplayObject添加到Canvas之前的运行时添加

然后我需要迭代ContentContainer的所有子项,但是第一次执行此操作时,它表示ContentContainer没有子项(即ContentContainer.numChildren = 0)。如果我再次这样做那么它就没问题了,并返回正确数量的孩子。

我需要调用什么来让ContentContainer重新计算它有多少个孩子?

2 个答案:

答案 0 :(得分:2)

正如Michael所说,查看代码会很有帮助,但您可能需要查看文档中的事件概述关于创建政策部分 - {{ 3}}

具体来说,在迭代之前,childAdd事件可能是您想要侦听的内容:

  

add在将组件添加到其容器并且父级和子级处于一致状态后由组件调度。在容器调度childAdd事件之后调度此事件,并且发生了因添加而需要进行的所有更改。

=瑞恩 ryan@adobe.com

答案 1 :(得分:0)

我使用callLater执行了类似的任务,以便在重新计算某些任务之前等待完成一个dragdrop。这可能适合你。

public function myFunct():void{
    //do your adding
    callLater(
        function():void{
            //do your loop
        }
    )
}