自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入學(xué)習(xí)Flex組件生命周期

開(kāi)發(fā) 后端
本文和大家深入學(xué)習(xí)Flex組件生命周期的概念,調(diào)用Flex組件構(gòu)造函數(shù)時(shí),構(gòu)造函數(shù)沒(méi)有返回類(lèi)型,沒(méi)有參數(shù),使用super()調(diào)用父類(lèi)的構(gòu)造器。

本文向大家簡(jiǎn)單介紹一下Flex組件生命周期,使用set,get設(shè)置Flex組件屬性,常在set方法內(nèi)監(jiān)控一個(gè)布爾變量來(lái)實(shí)現(xiàn)失效機(jī)制。

深入學(xué)習(xí)Flex組件生命周期

1、生命周期(LifeCycle)簡(jiǎn)述

⑴調(diào)用Flex組件構(gòu)造函數(shù)。構(gòu)造函數(shù)沒(méi)有返回類(lèi)型,沒(méi)有參數(shù),使用super()調(diào)用父類(lèi)的構(gòu)造器

⑵使用set,get設(shè)置Flex組件屬性,常在set方法內(nèi)監(jiān)控一個(gè)布爾變量來(lái)實(shí)現(xiàn)失效機(jī)制

⑶調(diào)用addChild()方法將Flex組件添加到父Flex組件顯示列表中,F(xiàn)LEX將自動(dòng)調(diào)用createChildren(),invalidateProperties(),invalidateSize(),invalidateDisplayList()。只有將Flex組件添加到父容器中,F(xiàn)LEX才能確定它的大小(size),設(shè)置它所繼承樣式(style)屬性,或者在屏幕上畫(huà)出它

⑷Flex組件的parent屬性設(shè)置為對(duì)父容器的引用

⑸樣式(style)設(shè)置

⑹Flex組件分發(fā)preinitialize事件

⑺調(diào)用Flex組件createChildren()方法

⑻調(diào)用invalidateProperties(),invalidateSize(),invalidateDisplayList()失效方法,F(xiàn)LEX將在下一個(gè)“渲染事件”(renderevent)期間對(duì)相應(yīng)的commitProperties(),measure(),updateDisplayList()方法進(jìn)行調(diào)用。這個(gè)規(guī)則唯一例外就是當(dāng)用戶(hù)設(shè)置Flex組件的height和width屬性時(shí),Flex不會(huì)調(diào)用measure()方法。也就是說(shuō),只有當(dāng)Flex組件的explicitWidth和explicitHeight屬性是NaN時(shí)Flex才會(huì)調(diào)用measure()方法。

⑼Flex組件分發(fā)initialize事件。此時(shí)Flex組件所有的子Flex組件初始化完成,但Flex組件尚未更改size和布局,可以利用這個(gè)事件在Flex組件布局之前執(zhí)行一些附加的處理

⑽在父容器上分發(fā)childAdd事件

⑾在父容器上分發(fā)initialize事件

⑿在下一個(gè)“渲染事件”(renderevent)中,Flex執(zhí)行以下動(dòng)作:

a.調(diào)用Flex組件的commitProperties()方法

b.調(diào)用Flex組件的measure()方法

c.調(diào)用Flex組件的layoutChrome()方法

d.調(diào)用Flex組件的updateDisplayList()方法

e.在Flex組件上分發(fā)updateComplete事件

⒀如果commitProperties(),measure(),updateDisplayList()方法調(diào)用了invalidateProperties(),invalidateSize(),invalidateDisplayList()方法,則Flexh會(huì)分發(fā)另外一個(gè)render事件

⒁在最后的render事件發(fā)生后,Flex執(zhí)行以下動(dòng)作:

a.設(shè)置Flex組件visible屬性使其可視

b.Flex組件分發(fā)creationComplete事件,F(xiàn)lex組件的大小(size)和布局被確定,這個(gè)事件只在Flex組件創(chuàng)建時(shí)分發(fā)一次

c.Flex組件分發(fā)updateComplete事件。無(wú)論什么時(shí)候,只要Flex組件的布局(layout),位置,大小或其它可視的屬性發(fā)生變化就會(huì)分發(fā)這事件,然后更新Flex組件來(lái)正確地顯示。

2、為什么使用失效機(jī)制(invalidationmechanism)

一種情況是,當(dāng)設(shè)置了Flex組件的多個(gè)屬性后,比如Button控件的label和icon屬性,我們需要所有屬性被設(shè)置后一次性執(zhí)行commitProperties(),measure(),updateDisplayList()方法,而不是設(shè)置過(guò)label屬性后執(zhí)行一遍這些方法,然后在設(shè)置icon屬性后又執(zhí)行一次這些方法。

另一種情況是幾個(gè)Flex組件同時(shí)更改了它們的字體大小。程序更改字體大小的執(zhí)行速度大大快于Flex更新應(yīng)用的速度,因此要在確定最終更改字體之后才開(kāi)始更新布局。另外,F(xiàn)lex需要協(xié)調(diào)布局操作以消除任何冗余過(guò)程,而不是在每個(gè)Flex組件更新它的字體大小之后都執(zhí)行一次布局操作。

Flex使用“失效機(jī)制(invalidationmechanism)”來(lái)同步Flex組件的更改。Flex用一系列方法的調(diào)用,比如在setter方法內(nèi)監(jiān)控一個(gè)變更變量來(lái)標(biāo)記Flex組件的某些東西已經(jīng)發(fā)生變化,然后在下一個(gè)“渲染事件(renderevent)”中觸發(fā)Flex組件的commitProperties(),measure(),layoutChrome(),updateDisplayList()檢查這些布爾變量來(lái)完成最終的變更邏輯。這樣做的額外好處就是setter方法可以更迅速地返回,把對(duì)新屬性值的處理留給了commitProperties()方法。

失效方法及其對(duì)應(yīng)的觸發(fā)函數(shù)如下:

invalidateProperties()通知Flex組件,以使下次屏幕更新時(shí),它的commitProperties()方法被調(diào)用。

invalidateSize()通知Flex組件,以使下次屏幕更新時(shí),它的measure()方法被調(diào)用。

invalidateDisplayList()通知Flex組件,以使下次屏幕更新時(shí)它的layoutChrome()方法和

updateDisplayList()方法能被調(diào)用。

當(dāng)Flex組件調(diào)用一個(gè)“失效”方法時(shí),它就通知Flex該Flex組件已經(jīng)被更新。當(dāng)多個(gè)Flex組件調(diào)用失效

方法,F(xiàn)lex會(huì)在schedules中協(xié)調(diào)這些更新,以使這些更新操作在下一次屏幕更新時(shí)一起執(zhí)行。注意,createChildren()沒(méi)有對(duì)應(yīng)的失效方法,它會(huì)在調(diào)用后被立即執(zhí)行。

 【編輯推薦】

  1. 技術(shù)分享 如何重寫(xiě)Flex組件
  2. Flex2.0Beta1新功能出爐
  3. 揭露Flex2.0的幾大誤區(qū)
  4. FlexBuilder3.0與Eclipse3.4的完美結(jié)合
  5. 剖析Flex DataGrid分頁(yè)控件的兩種分頁(yè)形式用法
責(zé)任編輯:佚名 來(lái)源: csdn.net
相關(guān)推薦

2010-07-14 10:59:15

Perl線(xiàn)程

2009-06-11 11:28:35

JSF生命周期

2010-08-02 12:56:51

Flex Cairng

2021-02-14 00:39:57

機(jī)器學(xué)習(xí)技術(shù)人工智能

2015-07-08 16:28:23

weak生命周期

2010-08-13 15:31:11

Flex正則表達(dá)式

2021-08-24 07:53:28

AndroidActivity生命周期

2023-12-18 08:24:56

ViewModel數(shù)據(jù)操作Android

2009-06-24 10:47:55

JSF生命周期

2012-06-20 10:29:16

敏捷開(kāi)發(fā)

2013-08-19 17:03:00

.Net生命周期對(duì)象

2021-07-19 05:52:29

網(wǎng)絡(luò)生命周期網(wǎng)絡(luò)框架

2011-08-15 16:09:44

Cocoa對(duì)象Objective-C

2022-04-19 07:20:24

軟件開(kāi)發(fā)安全生命周期SSDLC應(yīng)用安全

2009-08-10 14:31:46

ASP.NET組件設(shè)計(jì)ASP.NET控件生命

2023-10-07 00:05:07

2014-07-16 13:39:30

Windows Pho

2013-08-01 09:40:51

Windows 8.1

2009-06-18 13:32:39

Java線(xiàn)程生命周期

2012-04-28 13:23:12

Java類(lèi)生命周期
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)