转载:
?关于creationComplete事件的发生时机,手册中是这样说的:
?假设程序中有这样的结构:
Application ??? OuterVBox ??????? InnerVBox1 ??????????? InnerVBoxLabel1 ??????? InnerVBox2 ??????????? InnerVBoxLabel2 |
?事件: preinitialize,initialize,creationComplete发生的顺序是这样的:
OuterVBox preinitialize ??? InnerVBox1 preinitialize ??????? InnerVBox1Label preinitialize ??????? InnerVBox1Label initialize ??? InnerVBox1 initialize ??? InnerVBox2 preinitialize ??????? InnerVBox2Label preinitialize ??????? InnerVBox2Label initialize ??? InnerVBox2 initialize OuterVBox initialize ??????? InnerBox1Label creationComplete ??????? InnerVBox2Label creationComplete ??? InnerVBox1 creationComplete ??? InnerVBox2 creationComplete OuterVBox creationComplete |
?所有的initialization事件完成后,creationComplete时间才开始发生,先从叶子控件开始,然后是他们的父控件,直到application。
?如果将 OuterVBox容器变成ViewStack并且creationPolicy 属性为auto,则事件发生顺序是:
OuterViewStack preinitialize ??? InnerVBox1 preinitialize ??? InnerVBox2 preinitialize OuterViewStack initialize ??????? InnerBox1Label preinitialize ??????? InnerBox1Label initialize ??? InnerVBox1 initialize ??????? InnerBox1Label creationComplete ??? InnerVBox1 creationComplete OuterViewStack creationComplete |
然而,对于item renderer
或者 item editor,Flex?
可能会重用item renderer 或者item editor的实例。但是被重用的renderer 或者item editor的实例不会再次发生
creationComplete
事件。作为替代,你可以使用
dataChange事件
。Flex 会在每次data属性发生变化时触发
dataChange
事件。在
Accessing the listData property?(Flex2 help中)一节中的例子就使用了
dataChange事件来更新在DataGrid控件的item renderer中的
TextArea的内容