状态机 (State Manager)¶
使用 State Manager 在您的 Kanzi 应用程序中创建不同的状态。
例如,您可以定义不同状态下按钮的外观和行为,例如当用户选定、按下、按住或松开该按钮时,按钮如何反应。Kanzi 使用其动画系统来为状态之间的过渡制作动画。请参阅 动画系统 (Animation System)。
每个状态机由以下项组成:
状态组。 状态组包含状态,定义控制器属性,以及状态组中状态之间的过渡。一个典型的过渡定义了两个状态的属性值之间的时间段和插值路径。您可以使用所有属性的一般指南定义过渡,使用指定的每个属性的插值,或使用动画项。
状态。 每个状态包含一组属性,这些属性定义了您为其分配状态管理器的节点的外观和行为。在每个状态组中,一次只能激活一个状态。状态还可以通过使用启用属性启用或禁用控件输入、将状态设置为触发器设置中的触发条件,或者通过为每个状态显式定义触发器和操作来定义交互。
状态对象。 状态对象定义了节点在特定状态下的属性。例如,您可以为包含定义按钮外观的 Model 节点的 Button 2D 节点分配一个状态管理器。状态对象使用 Target Object Path 属性设置在 Model 节点中设置的网格的属性。例如,./Mesh。
例如,按钮的状态管理器可以包含三个状态组:按钮按下、按钮释放和悬停在按钮上。每个状态组包含启用和禁用状态,通过状态对象定义按钮在其中一个状态时的外观和行为,以及状态之间的过渡。
您可以通过以下方式定义两种状态之间的变化:
为状态组设置控制器属性,并为每个状态设置该属性的值。这些可以是隐式属性,例如 Button 节点的 Is Down 属性。当属性更改时,无论是作为节点固有逻辑的一部分还是指定的 Set Property 动作或动画,状态都会发生变化。请参阅 使用控制器属性设置状态。
使用 State Manager 操作 Go to State、Next State 和 Previous State。如果您使用 State Manager 操作和控制器属性,请注意,当控制器属性更改时,它会覆盖先前设置的状态。请参阅 使用状态管理器操作来设置状态。
通过完成以下教程之一学习如何使用状态机:
创建一个切换按钮。请参阅 教程:创建一个切换按钮。
创建一个按钮,并使用 Is Down 属性控制其状态。请参阅 教程:创建一个按钮。
使用自定义属性创建转向指示灯并对其进行控制。请参阅 教程:创建集群指示器。
缓动函数¶
使用缓动函数使 UI 元素更逼真。因为现实生活中的物体从不立即开始或停止,适当的缓动函数可以帮助您创造更愉悦的用户体验。
请参阅 使用状态迁移。
将鼠标悬停在缓动函数的图像上查看其创建的动画类型。