南锋

南奔万里空,脱死锋镝余

cocosCreator使用spine骨骼动画暂停、继续、重新播放动画

第一次用creator,spine好像没有提供动画暂停与恢复的api。之前用2dx的时候是通过节点的暂停和恢复方法来实现的,但是换成creator发现node的pauseAllActions()方法并没有效果。

暂停,继续

查找了一番之后,发现sp.Skeleton组件的api中定义了一个暂停的字段paused,将这个字段设置为true即可暂停动画,设置为false继续动画。

示例代码:

1
2
3
4
5
6
7
this.sk = this.spineNode.getComponent("sp.Skeleton") as sp.Skeleton;
stop(){
this.sk.paused= true; // 暂停动画
}
play(){
this.sk.paused= false; // 继续播放
}

注意,这里的将paused设置为false,动画将会在暂停的地方继续往后面播放。如果我们要想重头播放动画,该方法就不适用了。

暂停,重新播放

我这里的思路是将正在进行的动画线管给清除掉,然后重新播放动画。

重新播放动画代码示例:

1
2
3
4
5
6
7
this.sk = this.spineNode.getComponent("sp.Skeleton") as sp.Skeleton;
stop(){
this.sk.clearTrack(0);// 暂停动画
}
play(){
this.sk.setAnimation(0, "animation", false); // 重新播放动画
}