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的內容整理。

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