定时器启动的SPINE动画,会在首次播放动画时闪一下初始帧

  • Creator 版本号:1.6.0
  • 目标平台:Web

我用两种方式来播放spine动画,发现通过按钮(用户主动触发)的方式播放是没问题的。
但是如果通过定时器,或者其他方式(非用户主动出发)就会在首次播放的时候,会闪一下初始帧再正常播放,
以下是两种例子的方式:

    this.spine.active = false;
    this.schedule(() => { // 刚开始会出现瞬间播放最后以帧
        this.spine.active = true;
        var spine = this.spine.getComponent('sp.Skeleton');
        spine.setAnimation(0, 'animation', false);
    }, 2, 0);

    this.button.on('click', () => { // 用户点击后,正常播放
        this.spine.active = true;
        var spine = this.spine.getComponent('sp.Skeleton');
        spine.setAnimation(0, 'animation', false);
    });

没人知道是什么问题吗?

那个初始帧怀疑是没播放任何动画时候的状态, 可以setAnimation的时候先把opacity设为0, 之后scheduleOnce下一帧把opacity设置回来试试.

1赞

可以在setAnimation之后手动调用一次update(0.01f)刷新spine初始状态

1赞

今天也碰到和你一样的问题,最后解决办法是使用基于帧刷新写的定时器,而不用引擎自带的schedule,估计自带的schedule有bug

已经解决了,可以通过修改spine文件来解决。。。。

请问题主怎么修改spine文件?弄了半天也没弄好

请问怎么修改解决的? this.node.runAction(cc.sequence(cc.delayTime(2),cc.callFunc(()=>{//创建动画

完美解决

setAnimation后调用this.spine.update(0)有效。
楼上改opacity的方法,在一些改了图片预乘属性的spine上会有影响。

+1
请问题主怎么修改spine文件?可以分享一下嗎?

我擦 两年前的问题搬出来问楼主 楼主在不在人间还是个问题

看來樓主應該是不在人間了…

你们这样说楼主真的好么?可能楼主还在人间,只是不方便上网呢?比如在迪拜、叙利亚,或者看守所

Just kidding… XDD

me too