使用哪种无效方法

Which invalidate method to use

我对使用哪种无效方法以及何时使用它感到有点困惑。我需要更改一个组件的 x 和 y,在这种情况下应该调用一个失效方法来优化,但我不知道具体是哪个方法以及何时

target.addElement(node);
node.x = 100 + target.horizontalScrollPosition;
node.y = 100 + target.verticalScrollPosition;

node和target都是Groups

这取决于组件,也许您根本不需要调用任何组件。根据给定的一段代码,我会说它是 invalidateSize()。但是容器通常可以很好地测量它们的尺寸 属性。 invalidateDisplayList如果您需要更改组件的显示方式,这可能是个不错的选择。

所以,一般来说,这取决于您正在实施的组件(超类型等)。

编辑: 由于这两个实例都是组,因此您根本不应调用任何失效方法。您只会在实现具有附加属性的自定义组件时调用这些方法。对于群组,一切都已提前为您完成。实现了组件生命周期,各种布局提供了舒适的间接级别。

当您扩展组(或任何其他组件)时,您应该熟悉组件生命周期。

经验法则:

  1. 忽略纯 MXML 中的无效调用,因为它是由 MXML 编译器和组件本身完成的。
  2. 在覆盖的 setter 中使用失效调用,这会改变组件的状态(即使在 MXML 中)。如果 setter 随处使用 - 甚至在组件私有方法内部,这通常会导致组件的干净而简单的设计。
  3. 请谨慎使用 validateSizevalidateNow 等,因为这些是避免组件生命周期的简单同步快捷方式。

失效live cycles是基于flash players elastic race track,将数据的渲染和处理划分到处理代码的不同方面。

关于无效调用背后的想法的进一步阅读: 更新的弹性跑道[1]弹性跑道[2]

  1. [1]: http://www.craftymind.com/updated-elastic-racetrack-for-flash-9-and-avm2/
  2. [2]: http://tedpatrick.com/2005/07/19/flash-player-mental-model-the-elastic-racetrack/