动画状态
动画状态由 类 AnimationState 管理。
首先可以通过 getState() 获取动画状态:
然后设置动画播放的速度:
动画状态也提供了 play()
、pause()
、resume()
、stop()
等用于播放控制的方法,详情可参考下文 播放状态 部分的内容。
动画状态记录了动画的 累计播放时间。初始时累计播放时间为 0。当动画自然播放时,时间会不断累计。例如,当动画循环播放时,刚好第二次循环完毕后,累计播放时间将为 动画周期 * 2。
- 累计播放时间 由
AnimationState
的 time 字段获取,并且可以显式设置。 - 进度时间 由
AnimationState
的 字段获取,是 只读 的。
动画播放的循环模式与循环次数决定了累计播放至某一时间时动画的进度时间,不管 累计播放时间 因为时间的推移而增加还是因为直接设置而更改,进度时间 都会相应发生改变。
动画可以播放到结尾就停止,或者一直循环播放,或者也可以先播放到结尾再从结尾播放到开头如此循环,这些统称为循环模式,由枚举 表示,包括以下几种:
除此之外,上表中的每种循环模式还存在对应的 反向 循环模式:
动画状态的初始循环模式将从动画剪辑中读取。需要改变动画状态的循环模式时,简单地设置动画状态的 wrapMode
字段即可。
当动画循环模式为:
- 无限次循环模式:
repeatCount
将被设置为Number.Infinity
,即无限循环。
注意:设置循环次数应该在设置循环模式之后进行,因为重新设置循环模式时会重置循环次数。
动画状态提供了以下几种方法用于控制动画的播放、暂停、恢复和停止:
也可以通过以下字段查询动画的播放状态:
播放控制与播放状态之间的关系如下图所示:
通过动画状态可以获取到所有动画的信息,以便利用这些信息来判断需要做哪些事,更多接口请参考 。