spine动画,手法错误记录!

我有两个spine动作,需要在第一个动作完成之后,重复播放第二个动作

ani.setAnimation(0, action1, false);
ani.addAnimation(0, action2, true);

于是写出了上面这样的代码

由于需求原因, 某些情况 我需要很短的时间内播放第三个动作
ani.setAnimation(0, action3, false);

导致我在第3个动作播放完成之后,会播放第二个动作,由于不是必现的,导致排除难度加大,当我意识到这个问题的时候,我的第一想法是在播放第三个动作之前想法子清理掉之前的动作,于是试了一下这个api
clearTracks,我以为没有问题了,控制打开一看,发现动画缓存模式不能使用!
于是我想着把这个节点回收到内存池,重新获取一个新的节点,发现新创建的节点,有可能拿到这个老的节点,导致问题依旧存在!最后大致看了下源码,发现addAnimation 主要是加到这个数组里面去了,于是我回收动画节点之前,把这个数组置空就可以了!

最后有好的方法请底下留言!感谢!

不能这么玩,在安卓不生效,因为安卓是直接调用的c++代码,仔细看了下c++的代码,在C++里面是个私有队列,我纠正上面我说的bug的事情,只是没有提供方法去处理这个队列,所以使用addAnimation要小心使用,因为你一旦用了,在不改引擎代码的情况下,你是无法移除增加的这个动画,加个方法其实也很简单,但是需要重新编译下引擎!

有时候我们看源码去修改一些东西,需要留意原生环境的实现,否则只会在h5生效!

同样的问题,我使用setCompleteListener绕过

    skeleton.setAnimation(0, 'appear', false);
    skeleton.setCompleteListener(()=>{
        skeleton.setAnimation(0, 'idle', true);
        skeleton.setCompleteListener(()=>{});
    });