flex measure
[继承] 计算组件的默认大小和(可选)默认最小大小。此方法是一种高级方法,可在创建 UIComponent 的子类时覆盖。
您无需直接调用此方法。使用 addChild()
方法将组件添加到某个容器时,以及调用组件的
invalidateSize()
方法时,Flex 将调用 measure()
方法。
当设置组件的特定高度和宽度时,Flex 不会调用 measure()
方法,即使您显式调用
invalidateSize()
方法也不例外。也就是说,仅当组件的 explicitWidth
属性或
explicitHeight
属性设置为 NaN 时,Flex 才调用 measure()
方法。
覆盖此方法时,必须设置 measuredWidth
和 measuredHeight
属性以定义默认大小。您可以选择设置 measuredMinWidth
和 measuredMinHeight
属性来定义默认的最小大小。
大多数组件都会根据其显示内容以及影响内容显示的属性来计算这些值。一少部分组件只有硬编码的默认值。
measure()
的概念点供组件提供其原始或固有大小作为默认值。因此,measuredWidth
和
measuredHeight
属性应由以下几个因素确定:
- 组件需要显示的文本量。
- 文本的样式,如
fontSize
。 - 组件所显示的 JPEG 图像的大小。
- 组件子项的测量大小或显式大小。
- 任何边框、边距和间隙。
某些情况下,确定默认值的方式并不固定。例如,对于一个简单的 GreenCircle 组件,可能只需在其 measure()
方法中设置 measuredWidth = 100 和 measuredHeight = 100 便可提供合理的默认大小。而在其他情况下(例如
TextArea),相应计算(例如查找合适的宽度和高度,使其刚好适合显示所有文本并拥有黄金矩形的高宽比)所耗费的时间可能会过长。
measure()
的默认实现将
measuredWidth
、measuredHeight
、measuredMinWidth
和 measuredMinHeight
设置为 0
。