然後才是
preinitialize
在所有的初始化之前觸發,沒有子元件的定義,但是可以引用元件的變數.
initialize
當所有子元件生成完成後觸發,在這個時間點還沒有元件被渲染出來.
creationcomplete
元件定義完成並已經在顯示列表.
所有的元件初始化完成並顯示.
自定義的視覺化元件(uicomponent的子類)只有在呼叫過addchild()後, 才會有乙個systemmanager賦給他們, 之前是null. 所以在自定義視覺化元件的建構函式中不要使用systemmanager.
4. 呼叫createchild(). 此時, 所有應用元件被建立, 所有元件的createchild()被呼叫.
6. 派發creationcomplete事件
flex 是乙個事件驅動的程式設計模型, 任何事情的發生, 其背後必然存在乙個事件. 而開發者第一次看到mxml時, 很難體會到乙個xml標記的應用的事件流和例項化的生命週期. 這個對於html和flash的開發者尤其會感到困惑, 因為其熟悉的方式與flex的一點也不相似. html的例項化是從上到下的, flash的執行是從frame0開始一幀幀執行的. 而flex則又有不同.
從我們開始學習flex時, 我們就需要了解事件流和mxml的例項化. 我非常困惑因為我實在難以理解什麼樣的事件會被觸發或者事件什麼時候會被觸發. 關鍵是要理解事件的基礎並親自觀察事件流的初始化.
我們來看乙個簡單的mxml的應用.
<?xml version=」1.0″ encoding=」utf-8″?>
xmlns:mx=」
layout=」absolute」
backgroundgradientcolors=」[#67cbff, #fcffff]」
color=」#000000″
fontsize=」12″
preinitialize=」report( event , 『preinitialize』 )」
initialize=」report( event , 『initialize』 )」
creationcomplete=」report( event , 『creationcomplete』 )」
>
[bindable]
public var outtextdata:string=」";
public function report( event:event , value:string ):void
]]>
id=」outtextarea」
text=」」
right=」10″ left=」10″ top=」50″ bottom=」10″ alpha=」0.5″
wordwrap=」false」
initialize=」report( event , 『initialize』 )」
creationcomplete=」report( event , 『creationcomplete』 )」
/>
y=」10″ height=」30″ left=」168″ width=」150″
id=」hellobutton」
label=」say hello」
initialize=」report( event , 『initialize』 )」
creationcomplete=」report( event , 『creationcomplete』 )」
rollover=」report( event , 『rollover』 )」
rollout=」report( event , 『rollout』 )」
click=」report( event , 『click > hello!』 )」
/>
id=」goodbyebutton」
label=」say goodbye」
y=」10″ left=」10″ height=」30″ width=」150″ color=」#000000″
initialize=」report( event , 『initialize』 )」
creationcomplete=」report( event , 『creationcomplete』 )」
click=」report( event , 『click > goodbye!』 )」
/>
id=」clearbutton」
label=」clear」
y=」10″ left=」326″ height=」30″ color=」#000000″ right=」10″
initialize=」report( event , 『initialize』 )」
creationcomplete=」report( event , 『creationcomplete』 )」
click=」outtextdata=」;report( event , 『click』 )」
/>
這個應用執行時, 輸出了例項流程和事件流. 這校我們就能夠看到所有事件的觸發順序. 可以發現應用啟動後, 事件的順序是一定的. 下面是輸出的內容:
167ms >> eventflow0.preinitialize
183ms >> eventflow0.outtextarea.initialize
187ms >> eventflow0.hellobutton.initialize
188ms >> eventflow0.goodbyebutton.initialize
189ms >> eventflow0.clearbutton.initialize
189ms >> eventflow0.initialize
243ms >> eventflow0.outtextarea.creationcomplete
243ms >> eventflow0.hellobutton.creationcomplete
243ms >> eventflow0.goodbyebutton.creationcomplete
244ms >> eventflow0.clearbutton.creationcomplete
244ms >> eventflow0.creationcomplete
1807ms >> eventflow0.hellobutton.rollover
2596ms >> eventflow0.hellobutton.rollout
2954ms >> eventflow0.hellobutton.rollover
3170ms >> eventflow0.hellobutton.rollout
3543ms >> eventflow0.hellobutton.rollover
4052ms >> eventflow0.hellobutton.click > hello!
4267ms >> eventflow0.hellobutton.click > hello!
4474ms >> eventflow0.hellobutton.click > hello!
4569ms >> eventflow0.hellobutton.rollout
4907ms >> eventflow0.goodbyebutton.click > goodbye!
5130ms >> eventflow0.goodbyebutton.click > goodbye!
Flex Application 初始化順序
demo xmlns mx layout absolute backgroundgradientcolors 67cbff,fcffff color 000000 fontsize 12 preinitialize report event preinitialize initialize repo...
flex application初始化順序
然後才是 preinitialize 在所有的初始化之前觸發,沒有子元件的定義,但是可以引用元件的變數.initialize 當所有子元件生成完成後觸發,在這個時間點還沒有元件被渲染出來.creationcomplete 元件定義完成並已經在顯示列表.所有的元件初始化完成並顯示.自定義的視覺化元件 ...
Flex Application 初始化順序
然後才是 preinitialize 在所有的初始化之前觸發,沒有子元件的定義,但是可以引用元件的變數.initialize 當所有子元件生成完成後觸發,在這個時間點還沒有元件被渲染出來.creationcomplete 元件定義完成並已經在顯示列表.所有的元件初始化完成並顯示.自定義的視覺化元件 ...