Flex组件生命周期 。
flex组件生命周期如图所示:
Initialization(初始化)
在这个阶段,组件被初始化、绑定到display list,并被初始化、在初始化的construction阶段,构造器被调用。这是唯一一个在组件被添加到display list之前调用的方法。
在初始化的attachment阶段,组件被添加到display list,使用addChild()或者addChildAt()方法或者被定义在MXML文件中。一旦上述的情况发生,组件的initialize()方法将被调用。
在初始化的的initialization阶段,下列的动作将会发生:
预备初始化event将会被dispatch
createChildren() 方法将会被调用。在这种情况下 ,重写createChildren()方法用来增加chilid。
Update
update 阶段封装了所有发生在initialization 和destruction所有。组件在这里重复waiting, invalidation, and
validation 步骤。当然是建立在组件是否在与其交互。如果没有交互,将一直保持waiting状态知道destruction阶段
在update的waiting阶段,组件为update请求更新。任何的用户交互,例如用户输入数据或者选择一个item改变了组件的值,将会离开这个状态。
在update的invalidation阶段,特定的方法将会调用用来标记component的特定切面为dirty。这用来帮助优化自定义组件的显示。它的设计基于即使一些东西被更新,也不用重绘整个组件的想法。
一个组件用三种方式标示为dirty:
如果你想要标示properties为dirty,使用 invalidateProperties() 方法。它触发 commitProperties() 方法,在下一个frame。
如果组件被调整了大小,使用invalidateSize()方法标示sizing作为dirty。它触发 measure() 方法,在下一个frame。
如果你想标示drawing和layout为dirty,使用invalidateDisplayList()方法。它触发updateDisplayList() 方法,在下一个frame。
Invalidation 比直接调用validation方法更高效,因为properties可能会在显示一个frame中改变了很多次,但是只有最后一个值用于下一个frame。
Validation允许开发者将组件变化列队。如果没有它,应用显示将会因为不必要的处理和活动而明显下降。不同的方法将在update阶段的validation阶段被调用,依赖于properties, sizing, or drawing 是否被改变并标记为dirty。
Destruction
这个阶段就不多说了!