将gif图片解析为cocos2d-x帧动画

因为游戏项目需要能够直接播放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-08-01 07:56:28

将gif图片解析为cocos2d-x帧动画的相关文章

关于解决Activity设置图片背景和ImageView设置帧动画引发的OOM的解决

近期在工作中,由于Activity的背景图片均为1280 * 720大小的,引发了一系列的OOM问题.做了一些处理,心得如下: 1.首先为什么会出现OOM呢.对于一张1280 * 720的图片,它应该占多大的内存呢? 一张图片(bitmap)占用的内存大小大概等于图片的长度 * 图片的宽度(像素)* 单位像素所占用的字节数.而单位像素所占用的字节数,官网文档如下: 2.那么应该如何解决该问题呢? 首先出现OOM的原因是相应的Activity使用完该背景图片后,并没有释放掉对该图片的引用,系统并不

Android动画--帧动画和补间动画

帧动画 首先我们定义在drawable文件夹下定义一个xml文件 里面包含我们要播放的动画的图片,以及每一帧动画的播放的时长 <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@mi

Qt移动应用开发(三):使用精灵图片实现帧动画

Qt移动应用开发(三):使用精灵图片实现帧动画 上一篇博文讲到了Qt Quick对于动画的一般支持,动画的形式多样,配合不同的插值函数,可以几乎实现所有想要的动画效果,而对于游戏的一些特殊的效果比如说帧动画,Qt更是有专门的类来实现.下面我们就来看看Qt Quick中究竟是对帧动画是如何实现的吧. 原创文章,反对未声明的引用.原博客地址:http://blog.csdn.net/gamesdev/article/details/33743527 一般2D的游戏引擎都将帧动画作为一项非常重要的功能

002-UIImageView和UIButton对比 UIImageView的帧动画 格式符补充 加载图片两种方式 添加删除SUBVIEW

一>.UIImageView和UIButton对比 显示图片 1> UIImageView只是一种图片(图片默认会填充整个UIImageView)  image\setImage: 2> UIButton能显示2种图片 * 背景 (背景会填充整个UIButton)  setBackgroundImage:forState: * 前置(覆盖在背景上面的图片,按照之前的尺寸显示)  setImage:forState: * 还能显示文字 点击事件 1> UIImageView默认是不能

Zxing图片识别 从相册选二维码图片解析总结

Zxing图片识别 从相册选取二维码图片进行解析总结 在Zxing扫描识别和图片识别的解析对象是相同的 本文分三个步骤: 1 获取相册的照片 2 解析二维码图片 3 返回结果 1) 获取相册照片 google对4.4的uri做了点改动  为了适配多种手机 需要做一个判断版本 在Activity中开启相册: Intent innerIntent = new Intent(); // "android.intent.action.GET_CONTENT" if (Build.VERSION

UIImageView帧动画清除缓存图片,防止图片占用内存太多

我们在使用UIImageView帧动画时会碰到加载到内存的图片不会自动释放,占用很多的内存,这时我们可能使用 UIImage imageWithContentsOfFile 并配合 imageView.animationImages = nil; 来清理不用的缓存动画图片.具体如下: UIImageView帧动画相关属性和方法: 需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片) @property(nonatomic,copy) NSArray *animation

图片抖动(帧动画)

1.帧动画介绍:         CAKeyframeAnimation它可以在多个值之间进行动画.         设置多值之间的属性为:         后面是一个数组,就是要设置的多个值.         anim.values = @[];                  它还可以根据一个路径做动画.         anim.path = 自己创建的路径.          2.图片抖动思路:         其实就是做一个左右旋转的动画.先让它往左边旋转-5,再往右边旋转5度,再从

android 帧动画的实现及图片过多时OOM解决方案(一)

一,animation_list.xml中静态配置帧动画的顺序,如下: <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true" > <item android:drawable=&q

uwp 图片切换动画 使用帧动画

原文:uwp 图片切换动画 使用帧动画 上一篇博客使用了Timer来实现图片的切换,@lindexi_gd讨论了一下性能,我本人其实对性能这一方面不太熟,但我觉得还是有必要考虑一下,那么今天我们使用帧动画开实现以下 新建项目,添加一个Button和Image 在Page里定义资源 <Storyboard x:Key="std" x:Name="std" RepeatBehavior="Forever" AutoReverse="T