-
Creator 版本:2.3.4
-
目标平台:谷歌浏览器 还有 自带模拟器
-
重现方式:
/**
*-
@param node 动画节点
-
@param atlas 帧动画资源
-
@param url 动画地址
-
@param speed 播放速度
-
@param completeBlock //回调
*/
// 通过纹理图集播放动画
private playOfAtlas(node: cc.Node, atlas: cc.SpriteAtlas, url: string, speed?: number, completeBlock?: Function) {
let frames: cc.SpriteFrame[] = atlas.getSpriteFrames();
let clip: cc.AnimationClip = cc.AnimationClip.createWithSpriteFrames(frames, frames.length);
clip.name = url;
clip.wrapMode = cc.WrapMode.Normal;
let sprite = node.getComponent(cc.Sprite);
sprite.spriteFrame = frames[0];
sprite.sizeMode = cc.Sprite.SizeMode.RAW;
sprite.trim = false;
let ani = node.getComponent(cc.Animation);
let index = ani.getClips().indexOf(clip);
if (index == -1) {
ani.addClip(clip);
}
let state: cc.AnimationState = ani.play(clip.name);if (speed) {
state.speed = speed;
} else {
state.speed = 1;
}
//!!!以上都是正常的播放帧动画的常规操作,问题出现在下面!!!
//我本想在一开始播放动画就返回我需要的数据(动画总时间),但是只要在动画结束前回调函数,动画就播放出bug,动画没了.或者一闪就没了//不适用触发器直接返回,不行
// if (completeBlock) {
// completeBlock(state.duration / state.speed);
// }//触发开始播放,返回,还是不行
ani.once(cc.Animation.EventType.PLAY, () => {
if (completeBlock) {
completeBlock(state.duration / state.speed);
}
})
//唯一可行是cc.Animation.EventType.FINISHED没问题,但不能实现我的需求了
}
-
-
首个报错:
-
之前哪个版本是正常的:
-
手机型号:
-
手机浏览器:
-
编辑器操作系统:
-
重现概率:
补充一点:
没有任何错误,只是动画感觉被吃了一样
不好意思!
误报!
误报!!!
误报!!!