一、什麼是失效機制
flex 使用「失效機制(invalidation mechanism)」來同步元件的更改。flex 用一系列方法的呼叫,比如在setter方法內監控乙個變更變數來標記元件的某些東西已經發生變化, 然後在下乙個「渲染事件(renderevent)」 中觸發元件的commitproperties(), measure(), layoutchrome(),updatedisplaylist()檢查這些布林變數來完成最終的變更邏輯。這樣做的額外好處就是setter方法可以更迅速地返回,把對新屬性值的處理留給了commitproperties()方法。
二、為什麼使用失效機制
一種情況是,當設定了元件的多個屬性後,比如button 控制項的label 和icon 屬性,我們需要所有屬性被設定後一次性執行commitproperties(), measure(), updatedisplaylist()方法,而不是設定過label 屬性後執行一遍這些方法,然後在設定icon屬性後又執行一次這些方法。
另一種情況是幾個元件同時更改了它們的字型大小。程式更改字型大小的執行速度大大快於flex 更新應用的速度,因此要在確定最終更改字型之後才開始更新布局。另外,flex 需要協調布局操作以消除任何冗餘過程,而不是在每個元件更新它的字型大小之後都執行一次布局操作。
三、失效方法的聯絡
失效方法及其對應的觸發函式如下:
1. invalidateproperties() 通知元件,以使下次螢幕更新時,它的commitproperties()方法被呼叫。
2. invalidatesize() 通知元件,以使下次螢幕更新時,它的measure()方法被呼叫。
3. invalidatedisplaylist() 通知元件,以使下次螢幕更新時它的layoutchrome()方法和updatedisplaylist()方法能被呼叫。
當元件呼叫乙個「失效」方法時,它就通知flex該元件已經被更新。當多個元件呼叫失效
方法,flex 會在schedules中協調這些更新,以使這些更新操作在下一次螢幕更新時一起執行。注意,createchildren()沒有對應的失效方法,它會在呼叫後被立即執行。
四、迴圈週期中我們可以遵循以下的規則:
1.如果屬性需要改變子元件的乙個屬性時,呼叫invalidateproperties()同時重寫commitproperties()方法。
2.如果屬性需要改變當前元件上的一些可見的內容時,呼叫invalidatedisplaylist()方法同時重寫 updatedisplaylist()方法。
3.如果屬性影響了元件的大小,呼叫invalidatesize()方法並重寫measure()方法。
flex的失效機制
一 什麼是失效機制 flex 使用 失效機制 invalidation mechanism 來同步元件的更改。flex 用一系列方法的呼叫,比如在setter方法內監控乙個變更變數來標記元件的某些東西已經發生變化,然後在下乙個 渲染事件 renderevent 中觸發元件的commitpropert...
方法失效 失效分析含義及失效分析方法
失效分析 fa 是一門發展中的新興學科,近年開始從軍工向普通企業普及。它一般根據失效模式和現象,通過分析和驗證,模擬重現失效的現象,找出失效的原因,挖掘出失效的機理的活動。在提高產品質量,技術開發 改進,產品修復及仲裁失效事故等方面具有很強的實際意義。其方法分為有損分析,無損分析,物理分析,化學分析...
mysql索引失效機制 MySQL 索引失效原理
一 聯合索引的b 樹 索引失效我們針對的是聯合索引,我們之前有講到過,在沒有遵守最佳左法則或者使用like或者使用百分號的情況下索引會失效。但是到底為什麼索引失效了並沒有解釋。索引失效和innodb引擎的b 樹儲存方式有關。我們知道單索引的b 樹是這樣的。聯合索引的b 樹也相差不多,因為聯合所有有多...