最近要做帧动画,因为有几千张碎图,几百个动画,如果用动画编辑器一个一个的编辑,一张图片一张图片的拖动,不知道要拖到后年马月,而且资源管理器排序也不友好,找图片不方便,而且做好的动画基本不能更改,有一百个动画就要创建一百个animationClip,所以自己用了个笨办法做了个可以动态创建和更改的动画组件,原理很简单,计时器 + spriteFrame,但是我不知道这样做会不会对性能有影响?因为播放动画的时候计时器一直运行,而且要重绘sprite,会不会降低性能,还有就是有没有这个必要?或者有没有其他更好的办法动态创建和更改animation?
这是我做的,大概就是是一个动画数组,可以有很多个动画,每个动画有名称,还有前、后缀(比如帧图片名称是: anim(1).png anim(2).png anim(3).png…等等这种,前缀就是: “anim(” 后缀就是")",中间的数字就是帧编号,没有拓展名),动画的起始帧的编号,结束帧的编号,帧间隔时间(小于1就是帧间隔时间,大于等于1就是动画播放一次所需要的总时间),重复次数(为-1时就是一直重复),还有动画播放速度,现在实现的功能有播放、停止、暂停、恢复、加速、减速(可以在动画播放的时候加快和减慢播放速度,并且不会停止动画也不会重新开始播放),动态更改动画
虽然和官方的animation差不多,但是因为是脚本写的,所以可以动态创建,动态更改(官方的只能创建好所有动画,然后播放不同的动画,我这个可以不用预先创建好,要用的时候再创建),而且一个组件可以通过修改atlas,帧名称前后缀,起始帧编号,结束帧编号来更换为另一个动画,虽然还是要填很多参数,但是最重要的是可以动态创建和修改,虽然并没有什么卵用,秉着交流分享的精神来论坛求助:
第一个:有没有更好的方法?类似于cocos2d的那种动态创建,或者比我这个更好的办法?论坛有位同学发了一个,无奈我看不懂,而且是继承自cc.Animation的(新手一个,对底层基本上完全不了解)
第二个:如果没有更好的方法,如果我这个还过得去的话,这样用计时器和重绘sprite会不会降低性能?主要是网页上,如果性能会降低,有没有优化方法
以下是预先设置好几组动画,然后进行更换的项目,楼底有动态更换和动态添加的项目文件
helloWorld.zip (2.8 MB)
PS:个人水平太低(并不是有限,而是非常低),可能有很多垃圾代码,无用代码,啰嗦代码,或者混乱代码,基本上所有语句都有注释,但是表达能力有问题(不是有限,是有问题),可能有些会看不懂,如果官方或者民间的大神有更好的办法,请教教小弟,感激不尽,或者我的代码哪里有问题,希望能告知(如果以后我用这个出了问题,老板肯定把我炒了,而且还是不放油的内种)
因为资源有限,以下这图的增加动画是三帧,而更改动画是7帧,所以不要动画以为是一样的
添加动画也很简单,如果动画帧在当前图集里,直接像这样

如果动画帧没有在当前图集,可以通过修改图集,然后再添加动画,但是因为图集改变了,以前的动画就不能播放了
改变动画也很简单,像下面一样

这里并没有预先创建和设置,如果更改的动画在当前图集里,只需要更改的时候直接更改动画的起始编号和结束编号就行了,并没有其他什么操作,这样就不用把clips一个一个事先做好
以下是动态添加和动态更改的项目文件
helloWorld.zip (2.9 MB)



