如要重写组件,就不得不了解Flex中组件初始化过程。初始化过程中,系统依次调用组件的一下方法Constructor -> createChildren() ->commitProperties() -> measure() ->updateDisplayList()
介绍下各个函数的作用:
Constructor构造器:设置默认值,初始化属性,默认值最合适的地方。
createChildren用来创建组件的子对象(因为在组件加入容器之前添加子对象没有意义,此方法addChild是最合适的地方)
commitProperties用来处理属性值更新(多个属性值更新后统一处理入口和单值多次修改后处理入口)
measure设置组件一些默认显示属性大小(以便Flex布局管理器能正确知道该组件的大小,给其分配适当空间)
updateDisplayList用来重绘组件,子对象布局逻辑等
添加了可视化元素的自定义组建(说得直白点,就是样子和基类组件不同了),必须要重写createChildren()函数和updateDisplayList()函数。
当自定义的组建需要对传入的某个属性做出反应的话,就应该重写commitProperties函数。(调用invalidateProperties)
当自定义的组件和基类组件的大小不一致时,就应该重写measure方法,保证提供正确的大小信息。(调用invalidateSize)
当组件需要调整子对象全局显示逻辑,重写updateDisplayList,调用invalidateDisplayList
综合看来commitProperties,measure和updateDisplayList三个方法对应各自职责,但某些情况下measure和updateDisplayList处理边界有点模糊,个人更倾向于只重写和调用updateDisplayList
本文深入探讨了Flex组件初始化过程中的关键步骤,包括构造器、创建子对象、属性更新、尺寸设定和重绘组件等方法,并强调了在自定义组件时重写这些方法的重要性。

175

被折叠的 条评论
为什么被折叠?



