Flex 程序执行顺序

当我们每次编译运行flex应用程序时,尽管我们没有编写任何与进度条相关的代码,但无一例外的,应用程序会为我们自动加上这一部分。因此我们才会看到这个标准的进度条。

通常的flex应用程序,本质上来说是基于flex框架、采用ActionScript3编写的Flash应用程序。传统的使用Flash IDE(Flash CS5)创建的Flash程序时更多基于“时间轴”以及“帧”的概念,而易于设计师理解;而基于flex框架来创建的Flash程序更多是强调程序性,很少提及“时间线”和“帧”的概念,更易于程序员理解。当然flex应用程序一样有时间轴,只是这部分友flex框架隐藏起来,不为大家所熟悉,但理解这部分更助于大家对flex应用程序启动有更深刻的认识,以便对程序灵活的控制。

如上图,Flex程序共由两帧组成,第一帧是preloader部分,第二帧为主应用程序部分(Application),此两部分都是由flex应用程序的根SystemManager来管理,SystemManager是flash.display.MovieClip的子类,而影片剪辑支持帧。由于swf属于一种渐进式下载格式,正是由于这个特性,flash player并不需要等待整个程序下载完成便可直接访问已载入帧的内容,因此第一帧通常用来作为应用程序载入时的loading画面显示。一般来说,第一帧包含的内容应该尽可能的少(尽量不要含有flex框架的组件),以便很快的下载并立即显示;第二帧才是真正的内容,一旦SystemManager实例进入第二帧后,即开始内部主程序运行的生命周期,也就是<mx:Applicaiton>部分(SystemManager实例有application属性,在第一帧时,此属性为null,当进入第二帧时,该属性才指向真正的主程序Application实例)。SystemManager是Flex应用的主控者,它控制着应用窗口、Application实例、弹出窗口、cursors,并管理者ApplicationDomain中的类。SystemManager是FlashPlayer实例化的第一个类,它存储了应用窗口的大小和位置信息,保存其子组件(浮动窗口和模态窗口)的痕迹。通过SystemManager可以获取内嵌字体、样式和document对象。自定义的可视化组件(UIComponent的子类)只有在调用过addChild()后, 才会有一个SystemManager赋给他们, 之前是Null. 所以在自定义可视化组件的构造函数中不要使用SystemManager。

在程序进入第2帧,主程序application开始运行后,便会相应的触发相应的一系列事件,Flex程序中有Application和组件以及会触发的preinitialize、initialize、creationComplete事件,还有静态变量和成员变量,程序执行顺序如下:

1.创建静态变量

2.创建成员变量

3.Application的preinitialize事件

4.组件的preinitailize事件,然后是initialize事件

5.Application的initialize事件

6.组件的creationComplete事件

7.Application的creationComplete事件

8.Application的applicationComplete事件

 

接下来是Application的事件触发:

Applicaiton的preinitialize:在所有初始化之前触发,没有子组件的定义,但是可以引用组件的变量。

Applicaiton的initialize:当所有子组件创建完成后触发,在这个时间还有没有组件被渲染出来。

 

Application的creationComplete:组件定义完成并已经在显示列表中。

Application的applicationComplete:所有的组件初始化完成并显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值