成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入學習Flex組件生命周期

開發 后端
本文和大家深入學習Flex組件生命周期的概念,調用Flex組件構造函數時,構造函數沒有返回類型,沒有參數,使用super()調用父類的構造器。

本文向大家簡單介紹一下Flex組件生命周期,使用set,get設置Flex組件屬性,常在set方法內監控一個布爾變量來實現失效機制。

深入學習Flex組件生命周期

1、生命周期(LifeCycle)簡述

⑴調用Flex組件構造函數。構造函數沒有返回類型,沒有參數,使用super()調用父類的構造器

⑵使用set,get設置Flex組件屬性,常在set方法內監控一個布爾變量來實現失效機制

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

⑷Flex組件的parent屬性設置為對父容器的引用

⑸樣式(style)設置

⑹Flex組件分發preinitialize事件

⑺調用Flex組件createChildren()方法

⑻調用invalidateProperties(),invalidateSize(),invalidateDisplayList()失效方法,FLEX將在下一個“渲染事件”(renderevent)期間對相應的commitProperties(),measure(),updateDisplayList()方法進行調用。這個規則唯一例外就是當用戶設置Flex組件的height和width屬性時,Flex不會調用measure()方法。也就是說,只有當Flex組件的explicitWidth和explicitHeight屬性是NaN時Flex才會調用measure()方法。

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

⑽在父容器上分發childAdd事件

⑾在父容器上分發initialize事件

⑿在下一個“渲染事件”(renderevent)中,Flex執行以下動作:

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

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

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

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

e.在Flex組件上分發updateComplete事件

⒀如果commitProperties(),measure(),updateDisplayList()方法調用了invalidateProperties(),invalidateSize(),invalidateDisplayList()方法,則Flexh會分發另外一個render事件

⒁在最后的render事件發生后,Flex執行以下動作:

a.設置Flex組件visible屬性使其可視

b.Flex組件分發creationComplete事件,Flex組件的大小(size)和布局被確定,這個事件只在Flex組件創建時分發一次

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

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

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

另一種情況是幾個Flex組件同時更改了它們的字體大小。程序更改字體大小的執行速度大大快于Flex更新應用的速度,因此要在確定最終更改字體之后才開始更新布局。另外,Flex需要協調布局操作以消除任何冗余過程,而不是在每個Flex組件更新它的字體大小之后都執行一次布局操作。

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

失效方法及其對應的觸發函數如下:

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

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

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

updateDisplayList()方法能被調用。

當Flex組件調用一個“失效”方法時,它就通知Flex該Flex組件已經被更新。當多個Flex組件調用失效

方法,Flex會在schedules中協調這些更新,以使這些更新操作在下一次屏幕更新時一起執行。注意,createChildren()沒有對應的失效方法,它會在調用后被立即執行。

 【編輯推薦】

  1. 技術分享 如何重寫Flex組件
  2. Flex2.0Beta1新功能出爐
  3. 揭露Flex2.0的幾大誤區
  4. FlexBuilder3.0與Eclipse3.4的完美結合
  5. 剖析Flex DataGrid分頁控件的兩種分頁形式用法
責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-14 10:59:15

Perl線程

2009-06-11 11:28:35

JSF生命周期

2010-08-02 12:56:51

Flex Cairng

2021-02-14 00:39:57

機器學習技術人工智能

2015-07-08 16:28:23

weak生命周期

2023-12-18 08:24:56

ViewModel數據操作Android

2010-08-13 15:31:11

Flex正則表達式

2021-08-24 07:53:28

AndroidActivity生命周期

2011-08-15 16:09:44

Cocoa對象Objective-C

2022-04-19 07:20:24

軟件開發安全生命周期SSDLC應用安全

2012-06-20 10:29:16

敏捷開發

2009-06-24 10:47:55

JSF生命周期

2013-08-19 17:03:00

.Net生命周期對象

2021-07-19 05:52:29

網絡生命周期網絡框架

2009-08-10 14:31:46

ASP.NET組件設計ASP.NET控件生命

2010-07-14 10:48:37

Perl線程

2023-02-15 16:25:06

機器學習人工智能數據

2023-05-05 16:32:50

SveltosKubernetes集群

2009-06-18 13:32:39

Java線程生命周期

2012-04-28 13:23:12

Java生命周期
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产1区2区3区| 999久久久久久久久6666 | 中文字幕在线观看 | 亚洲视频在线看 | 人人爽人人草 | 成人三区四区 | 国产精品高潮呻吟久久av黑人 | 中文字幕动漫成人 | 日韩精品av| 日日碰狠狠躁久久躁96avv | 台湾a级理论片在线观看 | 日韩影院在线观看 | www.夜夜骑 | 精品麻豆剧传媒av国产九九九 | 美女久久久久久久久 | 在线国产精品一区 | 日韩欧美国产一区二区三区 | www.4虎影院 国产999精品久久久影片官网 | h肉视频 | 午夜影院网站 | 午夜视频在线 | 亚洲午夜精品视频 | 免费成人在线网 | 久久r精品| 婷婷五月色综合香五月 | 9999国产精品欧美久久久久久 | 免费黄色网址视频 | 91黄在线观看 | 色资源站 | 欧美日韩视频在线第一区 | 成人天堂噜噜噜 | 在线看av的网址 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 成人黄页在线观看 | 久久久久免费精品国产小说色大师 | 特黄级国产片 | 国产精品免费视频一区 | 国产日本精品视频 | 久久毛片| 欧美激情久久久 | 性生生活大片免费看视频 |