加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 组件初始化顺序

发布时间:2020-12-15 04:13:31 所属栏目:百科 来源:网络整理
导读:在FLEX中,我们经常会用到,当容器或者这个组件初始化的时候,或者创建完成的时候,就去做一些事情。 那么此时Flex就会派发preinitialize、initialize和creationComplete事件。当子项初始化完成后,其父容器开始初始化。即子项总是先于父容器初始化完成。然

在FLEX中,我们经常会用到,当容器或者这个组件初始化的时候,或者创建完成的时候,就去做一些事情。

那么此时Flex就会派发preinitialize、initialize和creationComplete事件。当子项初始化完成后,其父容器开始初始化。即子项总是先于父容器初始化完成。然而,只有当所有子项的父容器都初始化完成后,子项才开始派发creationComplete事件。

Flex的Preinitialize(预初始化)、Initialize(初始化)、CreationComplete创建完成事件

代码如下:

[html]? view plain copy
  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <s:Panel?xmlns:fx="http://ns.adobe.com/mxml/2009"???
  3. ?????????xmlns:s="library://ns.adobe.com/flex/spark"???
  4. ?????????xmlns:mx="library://ns.adobe.com/flex/mx"???
  5. ?????????width="100%"?height="100%"??
  6. ?????????span?style="color:#ff0000;">initialize="panel1_initializeHandler(event)"</span>??
  7. ?????????>creationComplete="panel1_creationCompleteHandler(event)">??
  8. ?????????title="{ModelLocator.getInstance().baseDatApplyTitle}"???
  9. span?style="color:#cc0000;">preinitialize="panel1_preinitializeHandler(event)" ?????????xmlns:utils="com.tiamaes.utils.*"??
  10. ?????????minHeight="500"??
  11. ?????????minWidth="700"??
  12. >updateComplete="panel1_updateCompleteHandler(event)">??
copy
             //initialize >执行顺序 2 protected?function?panel1_initializeHandler(event:FlexEvent):void??
  1. {??
  2. ????//?TODO?Auto-generated?method?stub???1?查询出来这个值??
  3. ????cityNameString=UserSession.getCurrentAccount().cityName;??
  4. ????yearStr=applyYear.text;??
  5. ????cityCode?=?UserSession.getCurrentAccount().cityCode;??
  6. ????token?=?dataApplyProxy.querySavedDataBaseList("2013-6-30?10:15:58",cityCode);??
  7. ????FlexUtil.addResponder(token,baseDataResult,baseDataFault);??
  8. ??????
  9. }??
  10. ??
  11. ????????      ?//creationComplete  >执行顺序 3 protected?function?panel1_creationCompleteHandler(event:FlexEvent):void??
  12. ????//?TODO?Auto-generated?method?stub??
  13. ????trace(tempValueArr);??
  14. ????trace(tempValueArr);??
  15. ?????????      //preinitialize?>?执行顺序 1  protected?function?panel1_preinitializeHandler(event:FlexEvent):void??
  16. ?????????      //updateComplete  >执行顺序 4 protected?function?panel1_updateCompleteHandler(event:FlexEvent):void??
  17. }??
对于单个组件来说,事件的执行顺序就是:preinitialize,initialize,creationComplete,updateComplete

如果2个组件相互嵌套,那行执行顺序就是:preinitialize先外后内,initialize和creationComplete,updateComplete先内后外。

如果2个组件是相互平行的关系,那行执行顺序就是:前面组件initialize结束后,后面的组件才会抛出preinitialize

<结束!>




Flex程序执行的过程中会触发preinitialize,initializecreationComplete事件,还会创建静态成员变量和成员变量。它们的执行顺序时怎样的?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 响应函数中创建它或者直接在该变量定义时创建。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读