动画
动画会改变对象的属性。动画会将输入值映射到输出属性值。
Kanzi Studio 将动画存储在素材库 (Library) > 动画 (Animations) 中。
在 Kanzi 中,您可以创建这样的关键帧动画:
- 通过更改定义节点位置的那些属性的值,动画化节点的位置。例如,通过动画化节点的位置,您可以让菜单从应用程序的侧面显示,或者在用户点击菜单时弹出一个按钮。
- 更改用于定义节点外观和感觉的那些属性的值,以动画化节点的外观和感觉。您可以动画化不同的属性类型:
- 浮点属性类型,例如,您可在其中动画化光强度或材质颜色等。
- 布尔属性类型,例如您可在其中动画化将属性映射到时间线值 0 和 1 时的可见性等值。
在 Kanzi 中,关键帧动画通过如下对象构成:
- 动画数据 (Animation Data). 使用动画数据 (Animation Data) 资源定义关键帧动画的关键帧和目标属性。一个动画数据 (Animation Data) 资源只能定向到一个属性或属性特性。动画数据 (Animation Data) 资源独立于它们的目标节点。因此,您可以重复使用动画数据 (Animation Data) 资源来动画化不同的节点。例如,您可以使用 动画数据 (Animation Data) 对象创建事件驱动的动画。请参阅 播放关键帧动画。
在动画数据 (Animation Data) 对象中,每个关键帧将一个输入值映射到一个输出值(浮点数值)。映射布尔值,以使小于 1 的值返回 false,等于或大于 1 的值返回 true。输入值可以是属性驱动的动画或绑定中使用的时间或属性值。
Kanzi 会按需将关键帧加载到内存中。动画在使用时(例如在动画剪辑编辑器中执行编辑操作时)会保留在内存中,并在完成修改后保存到磁盘上。请参阅 编辑动画剪辑。
- 动画剪辑 (Animation Clip) 和动画子剪辑 (Animation Child Clip)。使用动画剪辑 (Animation Clip) 将动画数据 (Animation Data) 资源组合成更复杂的动画。您可以在不同的动画剪辑 (Animation Clip) 项中重复使用相同的 动画数据 (Animation Data) 资源。使用动画子剪辑 (Animation Child Clip) 创建层级动画。
您可以使用目标 (Target) 属性为动画子剪辑设置目标节点层级。您可以使用相对路径或(如果在父剪辑中设置了定位参考 (Reference for Targeting) 属性)绝对路径来设置属性。如果您使用绝对路径,请将引用设置为以剪辑为目标的那个对象。请参阅 编辑动画剪辑。
- 时间线条目 (Timeline Entry)。使用 时间线条目 (Timeline Entry) 可以控制动画,包括重复、缩放、定位和混合以及定义动画输入值的类型:时间或属性值。
当在时间线序列中设置绝对路径参考 (Reference for Absolute Paths) 属性时,时间线条目可能会跟踪您使用绝对路径设置的对象的相对路径。将引用设置为在其中实例化了序列的那个对象。
时间线条目可以混合它们所包含的动画剪辑。系统根据托管时间线序列级别和每个条目中设置的条目权重属性来使用功能。条目权重 (Entry Weight) 由混合模式 (Blending Mode) 和权重 (Weight) 定义,其中的权重 (Weight) 是根据您选择的混合模式 (Blending Mode) 计算混合时使用的比率。如果将混合模式 (Blending Mode) 设置为无 (None),将不会对动画执行混合。请参阅 编辑时间线序列。
- 时间线序列 (Timeline Sequence)。使用时间线序列 (Timeline Sequence) 可以组合一组时间线条目 (Timeline Entry) 资源。
动画共享和定位
动画共享意味着一个动画可以对多个节点或一组节点进行动画化。Kanzi 中的所有动画都将被共享。您可以在不同的节点中重复使用动画剪辑 (Animation Clip) 和动画数据 (Animation Data) 资源。请参阅 播放关键帧动画。
目标动画会从节点的当前属性值获取动画化的属性的初值,并从指定的目标节点的当前属性值获取目标值。要使用目标动画,请为目标节点的属性设置一个新值并启动动画。由于新的动画会从当前属性值获取自己的新初值,因此即使是在连续动画的中间启动动画,动画也会平滑运行。