我现在动态创建了一个AnimationClip
这个Clip中有五个图片,也就是SpriteFrame
现在得到的效果是五个图片之间时间差相同,但是我想第一个图片和第二个图片之间相隔时间长一些,其余图片之间相隔时间一样,该怎么去做?
另外控制speed似乎也没有效果?
求大神告知
lz 怎么动态创建的 AnimationClip ?
cc.AnimaitonClip.createWithSpriteFrames(frames, 10)
你可以参考源码实现你想要的效果
https://github.com/cocos-creator/engine/blob/master/cocos2d/animation/animation-clip.js#L98
感谢,看源码找到了方法
https://github.com/cocos-creator/engine/blob/master/cocos2d/animation/animation-clip.js#L98
通过对AnimationClip源码获得的一些信息,能够进行自定义图片时间差的方法
在这里写出来供以后遇到类似问题的同学参考,这可能是一种非常low的方法
//第二个参数sample为帧数,即每秒多少帧
//帧数和frames这个数组的长度相除构成了这个动画的总长度,即frames.length / sample
var clip = cc.AnimationClip.createWithSpriteFrames(frames, 60);
//这个属性,就是动画的总长度,是一个只读属性,无法修改
//播放总长度对于自定义动画的影响很大
clip.duration
//这个属性,也是动画的总长度,是一个私有属性,上边的clip.duration实际返回的就是clip_duration的值
//这个属性我们是可以修改的,可以修改成自定义的动画播放长度,而不是引擎自动算出来的时间
clip._duration
clip这个对象有一个curveData的属性,这个属性记录的动画的播放数据
不了解的同学可以console.log打印看一下
clip.curveData.comps[“cc.Sprite”].spriteFrame是一个数组,这个数组对应着最开始传入的frames这个SpriteFrame的数组
要实现动画的自定义,也就是修改这个数组
clip._duration = 1.5;
clip.curveData.comps[“cc.Sprite”].spriteFrame[0].frame = 0;
clip.curveData.comps[“cc.Sprite”].spriteFrame[1].frame = 1.3;
clip.curveData.comps[“cc.Sprite”].spriteFrame[2].frame = 1.4;
clip.curveData.comps[“cc.Sprite”].spriteFrame[3].frame = 1.5;
上面的代码,即这个动画的总播放时长为1.5秒,
0秒时显示第一个图片,
1.3秒时显示第二个图片,
1.4秒时显示第三个图片,
1.5秒时显示第四个图片
这样,就做到了每个图片之间的间隔时间是不一样
mark