【Cocos2d-x 3.0 中文基础教程】精灵帧缓存
2016-06-22 00:59
555 查看
http://www.cocoachina.com/cocos/20140505/8319.html
简介
SpriteFrameCache 主要服务于多张碎图合并出来的纹理图片。这种纹理在一张大图中包含了多张小图,直接通过TextureCache引用会有诸多不便,因而衍生出来精灵框帧的处理方式,即把截取好的纹理信息保存在一个精灵框帧内,精灵通过切换不同的框帧来显示出不同的图案。
SpriteFrameCache
SpriteFrameCache的内部封装了一个Map _spriteFrames对象。key为帧的名称。SpriteFrameCache一般用来处理plist文件(这个文件指定了每个独立的精灵在这张“大图”里面的位置和大小),该文件对应一张包含多个精灵的大图,plist文件可以使用TexturePacker制作。
SpriteFrameCache的常用接口和TextureCache类似,不再赘述了,唯一需要注意的是添加精灵帧的配套文件一个plist文件和一张大的纹理图。下面列举了SpriteFrameCache常用的方法:(详细API请看SpriteFrameCache API)
获取单例的SpriteFrameCache对象。sharedSpriteFrameCache方法在3.0中已经弃用。
SpriteFrameCache* cache = SpriteFrameCache::getInstance();
销毁SpriteFrameCache对象。
SpriteFrameCache::destroyInstance();
使用SpriteFrameCache获取指定的精灵帧,创建精灵对象。
SpriteFrameCache *frameCache = SpriteFrameCache::getInstance();
frameCache->addSpriteFramesWithFile("boy.plist","boy.png");//boy.png里集合了boy1.png,boy2.png这些小图
auto frame_sp = Sprite::createWithSpriteFrameName("boy1.png");//从SpriteFrameCache缓存中找到boy1.png这张图片.
this->addChild(frame_sp,2);
SpriteFrameCache vs. TextureCache
SpriteFrameCache精灵框帧缓存。顾名思义,这里缓存的是精灵帧SpriteFrame,它主要服务于多张碎图合并出来的纹理图片。这种纹理在一张大图中包含了多张小图,直接通过TextureCache引用会有诸多不便,因而衍生出来精灵框帧的处理方式,即把截取好的纹理信息保存在一个精灵框帧内,精灵通过切换不同的框帧来显示出不同的图案。
跟TextureCache功能一样,将SpriteFrame缓存起来,在下次使用的时候直接去取。不过跟TextureCache不同的是,如果内存池中不存在要查找的图片,它会提示找不到,而不会去本地加载图片。
1. TextureCache时最底层也是最有效的纹理缓存,缓存的是加载到内存中的纹理资源,也就是图片资源。
2. SpriteFrameCache精灵框帧缓存,缓存的时精灵帧。
3. SpriteFrameCache是基于TextureCache上的封装。缓存的是精灵帧,是纹理指定区域的矩形块。各精灵帧都在同一纹理中,通过切换不同的框帧来显示出不同的图案。
AnimationCache::getInstace() 中也会用到精灵缓存帧
建议:在内存警告时我们应该加入如下的清理缓存操作:
void releaseCaches()
{
AnimationCache::destroyInstance();
SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
TextureCache::getInstance()->removeUnuserdTextures();
}
简介
SpriteFrameCache 主要服务于多张碎图合并出来的纹理图片。这种纹理在一张大图中包含了多张小图,直接通过TextureCache引用会有诸多不便,因而衍生出来精灵框帧的处理方式,即把截取好的纹理信息保存在一个精灵框帧内,精灵通过切换不同的框帧来显示出不同的图案。
SpriteFrameCache
SpriteFrameCache的内部封装了一个Map _spriteFrames对象。key为帧的名称。SpriteFrameCache一般用来处理plist文件(这个文件指定了每个独立的精灵在这张“大图”里面的位置和大小),该文件对应一张包含多个精灵的大图,plist文件可以使用TexturePacker制作。
SpriteFrameCache的常用接口和TextureCache类似,不再赘述了,唯一需要注意的是添加精灵帧的配套文件一个plist文件和一张大的纹理图。下面列举了SpriteFrameCache常用的方法:(详细API请看SpriteFrameCache API)
获取单例的SpriteFrameCache对象。sharedSpriteFrameCache方法在3.0中已经弃用。
SpriteFrameCache* cache = SpriteFrameCache::getInstance();
销毁SpriteFrameCache对象。
SpriteFrameCache::destroyInstance();
使用SpriteFrameCache获取指定的精灵帧,创建精灵对象。
SpriteFrameCache *frameCache = SpriteFrameCache::getInstance();
frameCache->addSpriteFramesWithFile("boy.plist","boy.png");//boy.png里集合了boy1.png,boy2.png这些小图
auto frame_sp = Sprite::createWithSpriteFrameName("boy1.png");//从SpriteFrameCache缓存中找到boy1.png这张图片.
this->addChild(frame_sp,2);
SpriteFrameCache vs. TextureCache
SpriteFrameCache精灵框帧缓存。顾名思义,这里缓存的是精灵帧SpriteFrame,它主要服务于多张碎图合并出来的纹理图片。这种纹理在一张大图中包含了多张小图,直接通过TextureCache引用会有诸多不便,因而衍生出来精灵框帧的处理方式,即把截取好的纹理信息保存在一个精灵框帧内,精灵通过切换不同的框帧来显示出不同的图案。
跟TextureCache功能一样,将SpriteFrame缓存起来,在下次使用的时候直接去取。不过跟TextureCache不同的是,如果内存池中不存在要查找的图片,它会提示找不到,而不会去本地加载图片。
1. TextureCache时最底层也是最有效的纹理缓存,缓存的是加载到内存中的纹理资源,也就是图片资源。
2. SpriteFrameCache精灵框帧缓存,缓存的时精灵帧。
3. SpriteFrameCache是基于TextureCache上的封装。缓存的是精灵帧,是纹理指定区域的矩形块。各精灵帧都在同一纹理中,通过切换不同的框帧来显示出不同的图案。
AnimationCache::getInstace() 中也会用到精灵缓存帧
建议:在内存警告时我们应该加入如下的清理缓存操作:
void releaseCaches()
{
AnimationCache::destroyInstance();
SpriteFrameCache::getInstance()->removeUnusedSpriteFrames();
TextureCache::getInstance()->removeUnuserdTextures();
}
相关文章推荐
- cocos2dx-lua sprite增加touch监听
- Cocos2d-x手游开发将log记录到文件
- cocos 获得2个点形成的线段的角度
- cocos-圆周运动 物理方法
- cocos-内存管理之sprite材质
- cocos-九宫格数据切割
- Cocos2d-x中CCSprite的Create流程--h
- cocos2dx CCUserDefault
- Cocos2d-JS 相关文章
- cocos2dx JNI DETECTED ERROR IN APPLICATION: illegal class name 'XXX'的错误修复
- cocos2dx常见的46中+22中动作详解
- 从cocos2dx源代码看android和iOS跨平台那些事
- 关于 error C2039: “create”: 不是“cocos2d::GLView”的成员的解决方法
- cocos listview 删除的3种方案
- Cocos开发VR菜鸟宝典 第六讲:操控设备的接入
- cocos阻挡层
- Cocos2d-Js ctor init onEnter的区别
- iOS和android游戏纹理优化和内存优化(cocos2d-x)
- cocos 单循环-按钮列表位置摆放
- cocos-抛物线运动