flex验证失效(组件生命周期)

时间:2012-05-03 14:49:18

标签: actionscript-3 flex flex4 flex3

我仍然对Flex中组件的验证和失效感到困惑。请问任何人可以简单比较一下验证可以做哪些失效,反之亦然。

非常感谢您的帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

虽然我同意这些评论,但这很好地记录了我认为你只是错过了“失效”和“验证”方法之间的整体关系。基本上每当你打电话来使某些事情失效时,无论是显示列表,大小还是属性,那么你所做的就是告诉它为其中一个设置一个布尔标志(任何时候你修改一个会修改的属性这三个中的任何一个都会在调用set width时调用相应的invalidate方法,例如invalidateProperties。当下一个输入帧/渲染发生时,它将检查标志,如果其中任何一个被设置为无效,则调用相应的验证方法(updateDisplayList,commitProperties,measure)。

要在FB / Eclipse中查看自己的代码,请按Ctrl + Shift + T并拉出UIComponent,打开UIComponent.as后按Ctrl + O键入validateNow,您可以看到方法体是1行并且有一个好的ASDoc评论那里解释它的作用。更好的是你会看到它在ILayoutManager上调用validateClient,弹出打开LayoutManager(再次按Ctrl + Shift + T)看看validateClient,它基本上解释了我在这里做了什么。

我认为这就是你来自哪里,因为我曾经也在那条船上,没有理解更新房产与影响兄弟姐妹/父母/子女之间的关系,但这对于减少处理负荷非常关键可以在帧刷新之间多次修改,并且不需要重新计算它周围的所有内容,直到它实际重绘为止。

问题在于,有时您想要修改属性并立即(即在下一行执行)能够看到它的副作用如何修改了布局的其他部分,在这种情况下,您可以调用validateNow()修改属性后强制它立即更新所有这些,即使它可能在重绘之前多次发生。这通常不是一个很好的做法,因为它通常意味着浪费了不必要的CPU时间,但有时它是最简单的选择。