Animation 属性会影响到下个动画的问题

问题:在使用Animation且有复数clips时,前一个动画的属性会延续到下一个动画。
举例:
我有一個Prefab,節點的Scale是1,prefab含有A、B两个动画。
A动画的Scale会从1变成2。
B动画的Scale则没有任何key。(值为prefab预设的1)
此时如果先播A再播B,B动画就会延续A动画的scale值,变成了2。

这个设计在有许多clips时会非常困扰,因为clips互相切换时常常会有不正常的延续状况发生,会意外的延续到前一个动画的值,要解决这个问题必须在每个clip的第一针补正,非常麻烦。以前Spine也是这样的设计,但是后来就可以透过指令reset slot、bones···,creator的话有啥解法呢?

我目前想到的只有,建立一个setup.clip作为预设状态(类似spine的setup或者3d的bindPose),全部都key好预设值,然后在每次播放动画的时候执行…
Animation.setCurrentTime(0, “setup”);
Animation.sample(“setup”);
来达到重置动画···避免不正常的延续···不过还没实行过,不知道可不可行···

有高人知道好的解决方法吗?谢!

动画一定要记得K首尾帧啊,比如你第二个动作节点刚开始是scale=1。那么你就再第一帧上添加关键帧,把scale=1设置上去写死。

很显然,动画系统不会在播放 animationClip 时还将上一帧时的 node 属性写入到下一帧,然后播放,动画系统应该存粹的完成按照 animationClip 文件记录节点属性变化执行相应的节点变换,这样的设计才是正确的。
想让播放完成了的动画恢复到第一帧时的状态,可以参考这样使用:

onPlayAnimation () {
        let animaCom = this.cocos.getComponent(cc.Animation);
        animaCom.on(cc.Animation.EventType.FINISHED, ()=>{
            var state = animaCom.getAnimationState("test1");
            var curves = state.curves;
            var info = state.getWrappedInfo(0.01);
            for (var i = 0, len = curves.length; i < len; i++) {
                var curve = curves[i];
                curve.sample(info.time, info.ratio, this);
            }
            console.log("into_and_stop_test1_0.01");
        });
        animaCom.play("test1");
        console.log("playing_test1_animation");
    },