Feathers:component-properties-methods
原文地址:http://wiki.starling-framework.org/feathers/component-properties-methods
目录 |
= 剖析 Feathers 组件 Anatomy of a Feathers Component
下面提到的属性和方法是 FeathersControl的核心部分,所有组件开发者都应对其烂熟于心。更多相关信息,请阅读 Feathers Component Lifecycle。
构造函数 The Constructor
- 构造函数** 中的代码应尽量精简。 通常大部分的初始化代码应放入 initialize() 函数。
初始化函数 initialize()
初始化函数 initialize() 在组件首次加入显示列表时被调用。在组件生命周期中,它只会被调用一次。 您可以重载此方法来创建子组件或进行其他适于在首次初始化中进行的任务。
失效函数 invalidate()
失效函数 invalidate() 用于通知组件它的某个属性被改变并需要重绘。通常在setter函数中调用次方法。参数中带有一个或多个标志告知组件什么被改变了。如果组件的某些部分没有被改变,组件可利用这些标志进行局部重绘。
绘制函数 draw()
绘制函数 draw() 在Starling渲染组件之前调用。您应当重载这个函数来响应属性的改变,计算理想大小,放置子组件。
关于 draw() 函数的详细信息,请阅读 Component Validation with draw()。
isInvalid() 函数 isInvalid()
isInvalid() 函数用于判断是否特定的标志在 invalidate() 函数中被设置。在 draw()调用这个函数可以判断组件的那些部分需要重绘。当 invalidate()被调用后,无论带不带标志位,无参数调用 isInvalid() 函数都将返回 true。
setSizeInternal() 函数
setSizeInternal() 函数用于指定组件的理想尺寸,它将从显式指定值和理想值之间计算用于布局的最终大小。
该函数的最后一个参数控制组件是否在调整尺寸后失效。如果在生效阶段调用(即在draw()函数中),应该传入false。否则组件会在每一个渲染周期重绘。
下文中有更多关于组件尺寸的内容。
isQuickHitAreaEnabled
isQuickHitAreaEnabled属性与传统显示列表中的mouseChildren属性类似。更进一步的是它将组件的点击区域限制与一个矩形框内,因此能大幅提高点击检测算法的效率。矩形点击区域的大小由组件的实际尺寸中计算得出(参考下文)。这对于按钮组件来说非常有效,对于大部分其他不需要子组件响应点击事件的组件都有好处。
name and nameList 名称和名称列表
组件的 nameList (名称列表)Feathers themes 用于对同一组件的不同类型提供不同的模板,一般用于子组件需要不同皮肤的组件中。比如Slider(滚动条)组件中的两类按钮子组件:滑块和滚动按钮。
关于组件名称的更多信息,请阅读 Creating Custom Feathers Themes
width and height 宽和高
FeathersControl 提供几个有用的宽高值,理解它们的不同对于提高效率和充分利用 Feathers 的威力都很重要。
width 和 height 的getter和setter将组建的宽和高属性暴露给外界。getter所返回的值由一系列因素决定。它们可能是从setter显式赋值的尺寸,也可能与显式赋值毫无关系,而是内部计算的理想值。
explicitWidth 和explicitHeight 变量保存width 和 height的显式赋值。下例中, Button (按钮)组件创建后,它的width被设为 150 像素。在按钮组件内部,值被保存在explicitWidth变量中。
var button:Button = new Button(); button.width = 150;
actualWidth 和 actualHeight 分别是 width 和 height 的 getter 函数的返回值。 这些值也是绘制组件的实际值。实际值通常就是显式赋值 explicitWidth 和 explicitHeight。但如果explicitWidth 和 explicitHeight没有赋值,组件会尝试计算理想尺寸。不同组件的尺寸理想值计算方法都彼此不同,可能是固定的像素值、可能跟皮肤尺寸相关也可能由子组件决定。
在组件最终布局前,自定义组件应将其计算的尺寸理想值传入 setSizeInternal() 函数。 此函数将判定尺寸是否被显式指定,如果被指定,理性值将被显式赋值覆盖,反之将使用理想值。
如果组件尺寸已被显式赋值但你还想使用组建内部计算的理想值,只需要将NaN赋予 width 和height。
minWidth 和 minHeight属性也用于setSizeInternal()函数中用于指定理想尺寸的最小值。这两个属性也不影响显式赋值。
更多教程,请回到 Feathers Documentation.
翻译者:袁立川