2011-06-15 68 views
6

在UI組件生命週期中,我聽說了驗證和失效事件。請簡要解釋我對這些事件的看法。 updateDisplayList()方法在該生命週期中做了什麼?如果可能,請簡要解釋我。先謝謝你。Flex中的UI組件生命週期

回答

15

Flex組件生命週期的一套方法和事件Flex用於設置的組件。在我們自己的組件中,擴展了UIComponent類,我們可以監聽這些事件或者重寫這些方法來完成特定於我們組件的內容。

我會補充說updateDisplayList()是一種方法,而不是一個事件,以防萬一他們有任何混淆。

這些是主要的重寫方法:

  • createChildren():這是用來創建一個組件的孩子。
  • commitProperties():這是一個通配符方法。您可以使用它來協調一個地方的多個屬性更改。你使用它取決於你正在創建的組件和屬性。
  • measure():這用於根據孩子設置組件的「理想」高度和寬度。您可以設置measuredHeight和measuredWidth。
  • updateDisplayList():這是用來做任何顯示相關的,最常見的位置和大小的組件的孩子。

所有這些方法將在初始組件創建期間運行。但是,可以將這些方法中的三個(commitProperties(),measure()和updateDisplayList())設置爲在下一個渲染事件期間運行。來準備他們來說,使用適當的方法失效只是它們無效:

  • invalidateProperties()力 的commitProperties()重新運行。
  • invalidateSize()將measure()重新運行爲 。
  • invalidateDisplayList()強制 updateDisplayList()重新運行。

渲染事件觸發的頻率取決於您的應用程序的幀速率。我認爲默認的Flex幀速率是每秒24幀,因此每1/24秒就有一個渲染事件。

我將組件生命週期定義爲方法和事件的集合。所以,這些都是事件,他們的順序火:

  • 預初始化
  • 初始化
  • childAdd將
  • updateComplete
  • creationComplete

updateComplete將觸發每一個渲染事件之後,我相信。但其他人是組件創建的一部分。

You should read the Flex documentation on this

The Spark Component Lifecycle添加不同鉤容納兩個類的方法;一個類用於業務邏輯,一個用於剝皮。但是,它擴展了MX/Halo組件的生命週期。

+0

謝謝ton @ www.Flextras.com。真的是一個任何人都能理解的非常簡單的解釋。 – 2011-06-15 14:11:24

+0

很高興幫助!組件生命週期是我關注大部分Flextras開發的地方(因爲組件構建就是我們所做的) – JeffryHouser 2011-06-15 14:16:06

1

簡而言之:

  • 無效標誌着驗證屬性。驗證只會在下一個渲染週期中發生,因此如果您在此期間設置了屬性值5次,那麼只有最後一個值將被有效提交。 (爲您提供了更好的性能)
  • 驗證:如果一個屬性被標記就會在的commitProperties更新()方法
  • 的updateDisplayList()驗證後調用:屬性的新值現在可以用來改變視圖根據這些值

一個好的更長的版本: http://www.dlgsoftware.com/primers/Primer_on_Flex3_Component_Lifecycle.htm