多个序列帧动画 帧数一样 如何同时同步的播放?
顶一下顶一下顶一下顶一下顶一下顶一下
这么久都没答案? 我也想知道? 有大佬说下不?
没懂什么意思。同时同步播放,一起开始不就行了吗
自己写个定时器 统一手动切换纹理
太简单了吧 还需要什么答案 以为问的不同帧数同步播放
我明白楼主的意思,楼上你别想当然了,如果需求能在同一帧一起开始播放,当然没问题,但有时候恰恰非你所愿,我就遇到类似的问题,我在场景中动态创建一批金币,这些金币并不是同时创建出来的,但是当这些金币显示在屏幕中时,我需要这些金币的动画同步播放,后来还是解决了,给下代码:
/**
- 帧动画播放组件
*/
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;
}
}
关键代码:
目前找到的方法是 在主循环里一同贴图 一同检测.
