近期过滤了一下flex的sdk中的类的结构,下面将部门内容列举一下,便于了解flex的原理
一.UIComponent执行addChild以后发生了什么。
1.addChild是UIComponent有的一个添加子对象的方法,在执行了代码以后,会发生下面的三个事情,
1) addingChild(child);
2) $addChildAt(child, index);
3) childAdded(child);
首先addingChild执行就是为了为添加的对象设置属性,并初始化样式
其次$addChildAt,将对象添加到父类中
childAdded将会执行子类对象的initialize()方法
2.对象的initialize方法代码执行,主要操作如下
1)发出PREINITIALIZE事件
2)执行createChildren()方法
3)执行childrenCreated()方法,主要是为已经创建的对象设置属性,大小,显示列表进行验证
4)调用initializeAccessibility方法
5)调用initializationComplete()方法
二。对象的序列化顺序
constructor
createChildren
commitProperties
measure
updateDisplayList
---
- 创建的任何ActionScript 3.0组件都需要重写createChildren()和updateDisplayList()方法
- 需要设置的属性依赖于其他已设置的属性时或者需要显式传入属性并设置到新创建的组件时,才需重写commitProperties()方法。在组件的所有子组件都创建之后,组件会调用commitProperties()来设置所有传入的属性
- measure()方法允许在必要时手动计算所有已创建子组件的高度和宽度。创建有着特殊布局规则的新容器时,往往要重写该方法