Flex 初始化二

Flex 初始化2

 

所有容器,事实上所有UIComponent 组件都使用一种三步走的过程来创建本身,即创建成员属性、创建子组件和设置自己的布局。所有容器的第一步都是由框架调用它的构造方法并且广播一个预初始化事件。第二步,假设容器与其所有的子孙的关系构成一棵树形结构,那么,预初始化的工作是由上而下的,也就是说,组件优先预初始化父亲容器,按照深度顺序首先预初始化根节点位置上的容器,直到叶子节点的子组件预初始化完毕。第三步,类似于于初始化的过程,真正初始化完成的顺序却是和预初始化结束的顺序相反,如此,先出初始化完毕叶子节点位置的子组件,然后此过程往上行节点重复,当某个节点位置的子组件初始化完毕时即广播一个creationComplete 事件,同理,随后上一级子组件也会广播一次这个事件,以此类推,所有的上行的父亲容器直到根节点位置上的容器都会在自身初始化完毕的时候广播该事件。下面的代码简单地展示初始化的顺序:

<mx:HBox>
       <mx:VBox>
             <mx:Panel/>
             <mx:Panel/>
       </mx:VBox>
</mx:HBox>

初始化将按照下面的顺序:

HBox preinitialize
         VBox preinitialize
                  FirstPanel preinitialize
                 SecondPanel preinitialize
                 FirstPanel initialize
                 SecondPanel initialize
         VBox initialize
HBox initialize


          FirstPanel creationComplete
          SecondPanel creationComplete
      VBox creationComplete
HBox creationComplete

当组件广播preinitialize 和initialize 事件时,它的子组件还没有创建完成。因此,要
访问某个组件的所有子组件,必须侦听creationComplete 时间。在广播initialize 事件后,
组件本身已经完成测量、绘制和布局,但是其子组件可能仍未完全完成实例化过程。最后,
creationComplete 事件表明所有容器内的子组件都完全实例化结束。

http://hongweiwang1984.blog.163.com/blog/static/27267762009420113725537/