- SpriteJS动画是标准的关键帧动画,我们可以设置多个属性关键帧,然后执行动画。
animate的第一个参数是keyframes,它是一个数组,定义了每一个关键帧上的属性。它有一个可选的offset属性,取值从0到1,定义该关键帧在整个动画过程中的位置。如果keyframes只有一帧,那么默认该帧为最后一帧(offset: 1)
animate的第二个参数是一个timing对象,timeing对象有以下属性:
方法返回一个animation对象,该对象有一系列属性和方法。
获取或设置baseTimeline。由于SpriteJS动画是基于timeline的动画,每个动画对象上有baseTimeline,这是layer的timeline,动画播放时,从baseTimeline中fork出动画自己的timeline。关于timeline的详细内容,可以参考这篇文章
cancel(preserveState = false)
finish()
结束动画,跳过未播放完的动画,直接到动画结束状态。
finished
Promise,如果动画结束,该Promise对象resolved。
有了finsished属性,我们可以很方便地让多段独立的动画依次执行。
只读属性,获得当前帧的属性值。
pause()
暂停动画的播放。
play()
开始播放动画,调用方法时,动画会自动播放,不需要手动调用play(),但是如果动画执行中被暂停,那么调用play()可以继续播放动画。
playbackRate
只读属性,获取动画当前的状态,有四个可能的值,分别是:
- idle: 动画播放被取消,进入这个状态
- pending: 如果timing设置了delay或endDelay,动画处于这两个delay中的一个区间时,状态是pending。如果调用pause方法将动画暂停,动画的状态也将是pending。
- running: 如果动画未被暂停,时间区间也不在delay或endDelay的区间,那么动画状态是running
progress
只读属性,0到1之间的值,表示当前动画的进度,如果timing的iterations大于1,那么progress周期性在0到1之间变化。
ready
Promise对象,当动画从pending状态进入running状态时,该对象resolved。
timing
只读属性,获取timing对象。
读取或设置timeline对象,通过改变timeline的currentTime可以手动控制动画跳转到任意时间。
我们可以通过layer.timeline来控制当前layer上的所有sprite元素的动画。