因为游戏项目需要能够直接播放gif格式的图片,但是cocos2d-x本身并没有提供这方面的功能。在网上查阅发现已经有人给出了一种实现,但是并不能够完全满足我的需求。而且存在一些问题,如不能跨平台,频繁加载时导致内存用尽。后来参考其源码作出了一些修改,使gif图片转换为帧动画方便我使用。
现在已经优化了内存分配问题并且支持跨平台了,支持cocos2d-x3.0以上版本。
下面是使用例子:
// 动画定义 GifAnimationDef def; def.loops = -1; // 循环次数 def.filePath = "g1.gif"; // 文件路径 def.delayPerUnit = 0.1f; // 每帧间隔 def.restoreOriginalFrame = false; // 还原初始状态 // 创建动画 auto pAnimation = GifAnimation::getInstance()->createAnimation(def); // 创建精灵播放动画 auto sp = Sprite::create(); sp->setPosition(Vec2(480, 320)); addChild(sp); sp->runAction(Animate::create(pAnimation));
使用上非常简单,只需要定义一个结构体,设置动画的属性。然后作为参数传入createAnimation函数即可,返回值为Animation *,也就是cocos2d-x 的帧动画。由于解析时需要占用大量内存,手机上尽量使用分辨率较小的gif图片为好。
源码下载:http://pan.baidu.com/s/1i3msPLz
时间: 2024-10-08 14:40:26