Posted on 2012-10-17 17:05
誰用我名字啦? 閱讀(251)
評論(0) 編輯 收藏 所屬分類:
flex學(xué)習(xí)之路
Flex應(yīng)用啟動的事件序列(1)
Flex的事件可以分為系統(tǒng)事件和用戶事件。
由用戶操作觸發(fā)的事件,就是用戶事件。Flex的用戶事件遵循了W3C DOM Level3(W3C文檔對象模型Level3)事件規(guī)范。具體可參見http://www.w3.org/TR/DOM-Level-3-Events/ 。用戶事件是應(yīng)用中最常見的事件類型,比如鼠標(biāo)點擊、鍵盤輸入等都屬于用戶事件。除了用戶直接觸發(fā)的事件,在Flex應(yīng)用運行過程中,F(xiàn)lex架構(gòu)本身也會自動觸發(fā)一些事件,也就是所謂的系統(tǒng)事件。在信號燈應(yīng)用中,creationComplete事件是系統(tǒng)事件,而MouseEvent.CLICK事件則是用戶事件。
所有的Flex可視化組件都繼承自基類mx.core.UIComponent,同時也繼承了UIComponent的系統(tǒng)事件。當(dāng)Flex應(yīng)用啟動時,會觸發(fā)一系列事件,這些事件表明了組件在啟動過程中的不同時間點,比如被創(chuàng)建、布局完成或者在屏幕上完成繪制等。這些啟動序列事件幫助開發(fā)者更好的監(jiān)控并控制應(yīng)用運行生命周期的各個環(huán)節(jié)。實際上,這"一系列"事件都由一個事件類mx.events. FlexEvent表示。FlexEvent類的不同類型反映了啟動過程中不同階段發(fā)生的事件。
在Flex應(yīng)用中,容器和組件啟動時的事件序列不同。
在組件所屬的容器內(nèi),組件被實例化、加入到父容器的顯示列表中,然后設(shè)置外觀尺寸,最終完成容器中的布局,并被繪制出來。圖3-1顯示了組件的啟動事件序列:
()(N1OAYU_I1)UO7~[%60FM.jpg)
圖3-1
由于容器包含了子組件,因此容器啟動時的序列不同于單一組件,圖3-2顯示了包含子組件的容器的啟動過程。不僅容器本身要完成創(chuàng)建的全過程,所包含的子組件也要依次序地完成自身的創(chuàng)建。當(dāng)然如果容器中嵌入了子容器,其啟動過程與此類似。
圖3-2
Flex應(yīng)用啟動的事件序列(2)
在所有組件和容器被創(chuàng)建并最終繪制在屏幕上之后,Application對象將觸發(fā)applicationComplete事件,該事件類型標(biāo)志著應(yīng)用啟動完畢,是應(yīng)用啟動時觸發(fā)的最后一個事件。
圖3-2中描述的部分啟動序列事件解釋如下:
preinitialize:在初始化之前觸發(fā),對于容器來說,所有子組件尚未定義。一般來說,不會在該事件觸發(fā)時配置組件;
initialize:當(dāng)組件或容器完成構(gòu)造,并設(shè)置初始化屬性后觸發(fā)。在這個階段,對于容器,其所有的子組件的preinitialize事件已經(jīng)觸發(fā),但是這些子組件還沒有完成布局;
creationComplete:當(dāng)應(yīng)用或組件(包括所有子組件)完成構(gòu)造、布局和繪制可見時觸發(fā)。當(dāng)creationComplete事件發(fā)生時,組件已經(jīng)被創(chuàng)建出來,因此開發(fā)者也能夠訪問同組件相關(guān)的屬性,比如height、width等屬性。開發(fā)者通常使用這個事件來對應(yīng)用進行初始化配置。比如為某些應(yīng)用組件添加偵聽器,調(diào)用Web服務(wù)等;
applicationComplete:所有的組件初始化完成并顯示。