91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

老調長談的Flex 4.6 可視組件的生命周期

發布時間:2020-06-13 18:13:04 來源:網絡 閱讀:521 作者:qqskynet 欄目:大數據

本文參考Adobe flex 4.6 help,寫作目的僅為了個人加強記憶與體會


Flex 4以上版本中,可視組件分為spark和halo兩套,spark用組件類和皮膚類的分離大大提高了對自定義外觀的支持,特別是對于某些子皮膚部件移動位置改變布局的自定義外觀,再也不需要大費周章的重寫組件的updateDisplay方法了。

兩套組件在生命周期上其實差別不大

spark組件
var btn:Button=new Button();
btn.label="按鈕";

var box:VGroup=new VGroup();
box.addElement(btn);
Halo組件
var btn:Button=new Button();
btn.label="按鈕";

var box:VBox=new VBox();
box.addChild(btn);

1、調用構造函數

var btn:Button=new Button();

2、設置組件屬性

btn.label="按鈕";

設置屬性可能會調用組件的相關失效方法如

invalidateProperties,invalidateSize,

invalidateSkinState(僅spark SkinnableComponent組件),invalidateDisplayList;

需要注意的是,如果此時可視組件并未添加到舞臺,則組件的nestLevlel為0,即使調用了以上失效方法,LayoutManager也不會把組件添加到驗證序列,也就是說,相關的驗證方法(commitProperties、measure、updateDisplayList)也并不會在下一個渲染事件時執行。而是會等到該可視組件添加到舞臺之后,重新設置UIComponent的nestLevel時,再調用updateCallbacks方法,才會調用LayoutManager的失效方法把該可視組件添加到驗證序列中,等到下一個render事件(或是ENTER_FRAME事件)中調用組件的相關驗證方法


3、把可視組件添加到舞臺

spark組件使用addElement,Halo組件使用addChild。

4、設置組件的parent屬性

5、計算組件的style設置

6、組件調度preinitialize事件

7、組件調用createChildren方法

Halo組件在createChildren方法中創建子組件,并偵聽子組件的相關事件。

而spark SkinnableComponent組件在createChildren方法中調用validateSkinChange→再調用attachSkin方法,在attachSkin方法中創建skin,添加到組件類顯示列表上,然后調用findSkinParts方法,循環skin實例中的皮膚部件,把每個皮膚部件的id和皮膚部件實例對象本身作為參數調用partAdded方法,組件開發者一般在partAdded方法中給皮膚部件添加事件偵聽。findSkinParts完成后,會調用invalidateSkinState方法(該方法僅檢測skinStateIsDirty布爾標志變量是否為true,不為true則設為true,調用invalidateProperties方法)

8、調用失效方法

invalidateProperties,invalidateSize,

invalidateSkinState(僅spark SkinnableComponent組件),invalidateDisplayList;

9、組件調度initialize事件,此時子組件已創建完畢,但尚未布局、設置尺寸。

10、父容器組件調度elementAdd(spark)或childAdd(Halo)事件

11、父容器組件調度initialize事件

12、在SystemManager(Flex程序的真正主類)的下一個render事件調度時,組件調用相關的驗證方法如

commitProperties,measure(如果設置了顯示尺寸值,則不會調用),updateDisplayList。

spark SkinnableComponent組件的commitProperties方法會檢測skinStateIsDirty布爾標志變量,如果為true,則會調用getCurrentSkinState方法獲取skin應有的可視狀態State,然后將其設為skin的currentState屬性

13、如果在驗證方法調用的過程中,再次調用了失效方法,則會在SystemManager的再下一個render事件中,再次調用組件的驗證方法

14、最后一個render事件中,組件的驗證方法(沒有再次調用失效方法)執行完畢后,設置組件visible為true,調度creationComplete事件(僅在組件創建完成時調度一次)

15、調度updateComplete事件。可視組件每次因為布局、位置、尺寸等變化而更新組件顯示完成后,都會調度updateComplete事件




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

麻阳| 元朗区| 梁平县| 克什克腾旗| 宝山区| 铁岭县| 青龙| 新丰县| 朔州市| 腾冲县| 慈溪市| 巩留县| 巴林左旗| 怀集县| 和政县| 天长市| 商丘市| 遂溪县| 息烽县| 沾益县| 津南区| 深泽县| 治多县| 林芝县| 南川市| 峡江县| 长宁区| 盐山县| 佛坪县| 中山市| 黄山市| 和静县| 乐山市| 长春市| 兴安县| 闽清县| 龙陵县| 临城县| 望奎县| 贵德县| 安国市|