Adobe Flex Application LifeCycle

Adobe Flex Application LifeCycle
(图片来源于jexchan)

Flex的根对象就是SystemManager,而不是我们平常看到的Application。

SystemManager是第一个在Flex应用中被创建的Display Class,继承自flash.dispaly.MovieClip,所以才能实现Preloader和Application的2个frame。

SystemManager有一个topLevelSystemManager对象,指向一个SystemManager实例,是所有当前在flash player运行的任何东西的根(root),如果flex被作为主应用加载到flash player则上述属性将指向其本身(self-refrencing),但当flex应用是被另一flex应用载入的,其自身的SystmenManager的topLevelSystemManager属性则不是自引用了,而是指向其父应用的SystemManager实例。所有UIComponent的子类都有一个systemManager属性指向应用的SystemManager实例,在被SystemManger实例监听的component的事件发生冒泡时,其将拥有事件处理链上最后的处理权。

Preloader
Preloader是一个轻量级的类,在systemManager的第一帧被实例化,preloader会dispatch出一系列的事件,由progress bar监听实现loading界面,一旦应用进入第二帧待application初始化后会借由system manager通知preloader初始化进度,preloader通知system manager其准备待删除,主要是一些初始化设定和下载runtime share library。
Preloader的事件: 
progress
Indicates download progress
complete
Indicates that the download is complete
rslError
Indicates that a runtime shared library could not load
rslProgress
Indicates the download progress for a runtime shared library
rslComplete
Indicates that the download is complete for runtime shared libraries
initProgress
Indicates that the application is initializing
initComplete
Indicates that the application has initialized
在理解Preloader的同时也要反方向思考纯AS工程中如何做Preloader,以前就写过AS3工程 Custom Preloader 动态加载 Application可以进行思考。

Application
Application是我们平日用到的最多的类,在systemManager的第二帧被实例化,它是一个单例化的类,因此无论你new多少个Class它都会指向同一个instance实体,根据创建时间的进度,它同样会dispatch出一系列的事件。
Application的事件:
preinitialize
application已经实例化但尚未创建任何child component
initialize
已经创建child component但未对其进行布局(lay out)
creationComplete
application已经完成实例化并完成所有child component的布局
applictionComplete
已经准备完成Flex SWF必要的初始化

上述就是整个Adobe Flex Application LifeCycle的内容整理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章