多个序列帧动画 帧数一样 如何同时同步的播放?

多个序列帧动画 帧数一样 如何同时同步的播放?

顶一下顶一下顶一下顶一下顶一下顶一下

这么久都没答案? 我也想知道? 有大佬说下不?

没懂什么意思。同时同步播放,一起开始不就行了吗

自己写个定时器 统一手动切换纹理

太简单了吧 还需要什么答案 以为问的不同帧数同步播放

我明白楼主的意思,楼上你别想当然了,如果需求能在同一帧一起开始播放,当然没问题,但有时候恰恰非你所愿,我就遇到类似的问题,我在场景中动态创建一批金币,这些金币并不是同时创建出来的,但是当这些金币显示在屏幕中时,我需要这些金币的动画同步播放,后来还是解决了,给下代码:

/**

  • 帧动画播放组件

*/

export class ClipHelper extends cc.Component {

private _frames = [];

private _interval = 0.1;

private _sp: cc.Sprite = null;

private _isPlaying = false;

private _index = 0;

private _dt = 0;

onLoad() {

    this._sp = this.node.getComponent(cc.Sprite);

    if (!this._sp)

        this._sp = this.node.addComponent(cc.Sprite);

}

update(dt) {

    let self = this;

    if (self._frames.length > 0 && self._isPlaying && this._dt >= self._interval) {

        self._sp.spriteFrame = self._frames[self._index];

        self._dt = 0;

        self._index++;

        if (self._index == self._frames.length) self._index = 0;

    }

    self._dt += dt;

}

/**

 * 设置序列帧

 * @param frames 序列帧列表

 * @param interval 播放间隔时间

 */

setData(frames, interval = 0.1) {

    this._frames = frames;

    this._interval = interval;

}

/**

 * 播放

 * @param isSyn 是否同步帧

 */

play(isSyn = true) {

    if (isSyn) {

        let t = cc.director.getTotalTime() / 1000;

        this._index = (t / this._interval) % this._frames.length;

    } else {

        this._index = 0;

    }

    this._isPlaying = true;

}

stop() {

    this._isPlaying = false;

}

}

关键代码:

目前找到的方法是 在主循环里一同贴图 一同检测.