在FLEX中,我们经常会用到,当容器或者这个组件初始化的时候,或者创建完成的时候,就去做一些事情。
那么此时Flex就会派发preinitialize、initialize和creationComplete事件。当子项初始化完成后,其父容器开始初始化。即子项总是先于父容器初始化完成。然而,只有当所有子项的父容器都初始化完成后,子项才开始派发creationComplete事件。
Flex的Preinitialize(预初始化)、Initialize(初始化)、CreationComplete创建完成事件
代码如下:
- <?xml?version="1.0"?encoding="utf-8"?>??
- <s:Panel?xmlns:fx="http://ns.adobe.com/mxml/2009"???
- ?????????xmlns:s="library://ns.adobe.com/flex/spark"???
- ?????????xmlns:mx="library://ns.adobe.com/flex/mx"???
- ?????????width="100%"?height="100%"??
- ?????????span?style="color:#ff0000;">initialize="panel1_initializeHandler(event)"</span>??
- ?????????>creationComplete="panel1_creationCompleteHandler(event)">??
- ?????????title="{ModelLocator.getInstance().baseDatApplyTitle}"???
- span?style="color:#cc0000;">preinitialize="panel1_preinitializeHandler(event)" ?????????xmlns:utils="com.tiamaes.utils.*"??
- ?????????minHeight="500"??
- ?????????minWidth="700"??
- >updateComplete="panel1_updateCompleteHandler(event)">??
//initialize >执行顺序 2 protected?function?panel1_initializeHandler(event:FlexEvent):void??
- {??
- ????//?TODO?Auto-generated?method?stub???1?查询出来这个值??
- ????cityNameString=UserSession.getCurrentAccount().cityName;??
- ????yearStr=applyYear.text;??
- ????cityCode?=?UserSession.getCurrentAccount().cityCode;??
- ????token?=?dataApplyProxy.querySavedDataBaseList("2013-6-30?10:15:58",cityCode);??
- ????FlexUtil.addResponder(token,baseDataResult,baseDataFault);??
- ??????
- }??
- ??
- ???????? ?//creationComplete >执行顺序 3 protected?function?panel1_creationCompleteHandler(event:FlexEvent):void??
- ????//?TODO?Auto-generated?method?stub??
- ????trace(tempValueArr);??
- ????trace(tempValueArr);??
- ????????? //preinitialize?>?执行顺序 1 protected?function?panel1_preinitializeHandler(event:FlexEvent):void??
- ????????? //updateComplete >执行顺序 4 protected?function?panel1_updateCompleteHandler(event:FlexEvent):void??
- }??
对于单个组件来说,事件的执行顺序就是:preinitialize,initialize,creationComplete,updateComplete
如果2个组件相互嵌套,那行执行顺序就是:preinitialize先外后内,initialize和creationComplete,updateComplete先内后外。
如果2个组件是相互平行的关系,那行执行顺序就是:前面组件initialize结束后,后面的组件才会抛出preinitialize
<结束!>
Flex程序执行的过程中会触发preinitialize,initialize和creationComplete事件,还会创建静态成员变量和成员变量。它们的执行顺序时怎样的?Flex程序的执行顺序如下。?
- 创建静态成员变量
- 创建成员变量
-
触发preinitialize事件
- 执行初始化?
-
触发initialize事件
- 执行创建过程?
-
触发creationComplete事件
如果
Flex
使用了组件,那么主程序和组件的
preinitialize,initialize
和
creationComplete
事件的先后顺序又是怎样的?
?
例如
?
一个程序有下面的结构
?
Applicaion
? static member
? member
? TestBox1
? TestBox2
?
那么此程序的执行过程如下。
?
create static member
create member
?
application preinitialize
TestBox1 preinitialize
TestBox1 initialize
TestBox2 preinitialize
TestBox2 initialize
application initialize
TestBox1 creationComplete
TestBox2 creationComplete
applicationcreationComplete
?
事实上,
Flex
中
一个组件的initialize
过程包括它的子组件的
preinitialize
和
initialize
两个过程。flex的一个组件创建过程包括它的子组件的
创建过程
。
?
Tips:
?
如果你要在子组件的
initialize
响应函数中使用
Application
的某个变量,你必须在
application?
的
?
Preinitialize
响应函数中创建它或者直接在该变量定义时创建。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|