Flex中的UI组件生命周期

时间:2011-06-15 12:17:01

标签: flex actionscript-3

在UI组件生命周期中,我听到了验证和失效事件。请简要解释一下这些事件。 updateDisplayList()方法在该生命周期中做了什么。如果可能的话,请简要解释一下。先感谢您。

2 个答案:

答案 0 :(得分:15)

Flex Component LifeCycle是Flex用于设置组件的一组方法和事件。在扩展UIComponent类的我们自己的组件中,我们可以监听这些事件或覆盖这些方法来执行特定于我们组件的东西。

我要补充一点,updateDisplayList()是一个方法,而不是一个事件,以防它们有任何混淆。

这些是主要的可覆盖方法:

  • createChildren():这用于创建组件的子项。
  • commitProperties():这是一个外卡方法。您可以使用它在一个位置协调多个属性更改。您使用它取决于您正在创建的组件和属性。
  • measure():用于根据子项设置组件的“理想”高度和宽度。您可以设置measuredHeight和measuredWidth。
  • updateDisplayList():这用于执行与显示相关的任何操作,最常见的是对组件的子项进行定位和调整大小。

所有这些方法都将在创建初始组件期间运行。但是,这些方法中的三个 - commitProperties(),measure()和updateDisplayList() - 可以设置为在下一个render事件期间运行。要准备它们以便运行,只需使用适当的失效方法使它们失效:

  • 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组件的生命周期。

答案 1 :(得分:1)

简而言之:

  • invalidation标记用于验证的属性。验证只会在下一个渲染周期中进行,因此如果在此期间设置属性值5次,则只会有效提交最后一个值。 (给你更好的表现)
  • 验证:如果标记了属性,它将在commitProperties()方法中更新
  • 验证后调用
  • updateDisplayList():现在可以使用属性的新值根据这些值更改视图

更长的版本: http://www.dlgsoftware.com/primers/Primer_on_Flex3_Component_Lifecycle.htm