CCSpriteFrameCache和CCTextureCache
来源:互联网 发布:音频对比软件 编辑:程序博客网 时间:2024/05/16 15:17
转自:
http://blog.sina.com.cn/s/blog_bcbac6b90101fs92.html
CCTexture2D* cache = CCTextureCache::sharedTextureCache()->addImage("hero.png");
CCSprite* sprite = CCSprite::spriteWithTexture(cache);
它相当于CCTexture2D的容器,是内存池,用来缓存CCTexture2D对象的,它内部有一个字典CCMutableDictionary m_pTextures,key为图片的名称,值是CCTexture2D。
(4) CCSpriteBatchNode
它是批处理绘制精灵,主要是用来提高精灵的绘制效率的,需要绘制的精灵数量越多,效果越明显。因为cocos2d-x采用opengl es绘制图片的,opengl es绘制每个精灵都会执行:open-draw-close流程。而CCSpriteBatchNode是把多个精灵放到一个纹理上,绘制的时候直接统一绘制该texture,不需要单独绘制子节点,这样opengl es绘制的时候变成了:open-draw()-draw()…-draw()-close(),节省了多次open-close的时间。CCSpriteBatchNode内部封装了一个CCTextureAtlas(纹理图集,它内部封装了一个CCTexture2D)和一个CCArray(用来存储CCSpriteBatchNode的子节点:单个精灵)。注意:因为绘制的时候只open-close一次,所以CCSpriteBatchNode对象的所有子节点都必须和它是用同一个texture(同一张图片):
在addChild的时候会检查子节点纹理的名称跟CCSpriteBatchNode的是不是一样,如果不一样就会出错,
5) CCSpriteFrameCache
它是管理CCSpriteFrame的内存池,跟CCTextureCache功能一样,不过跟CCTextureCache不同的是,如果内存池中不存在要查找的帧,它会提示找不到,而不会去本地加载图片。它的内部封装了一个字典:CCDictionary *m_pSpriteFrames,key为帧的名称。CCSpriteFrameCache一般用来处理plist文件(这个文件指定了每个独立的精灵在这张“大图”里面的位置和大小),该文件对应一张包含多个精灵的大图,plist文件可以使用TexturePacker制作。
下面是使用CCSpriteFrameCache的使用代码示例:
[cpp]
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("animations/grossini.plist", "animations/grossini.png");
m_pSprite1 = CCSprite::spriteWithSpriteFrameNam
CCSpriteFrameCache * cache = CCSpriteFrameCache::sharedSpriteFrameCache();
在这里要注意的就是 两种获得图片纹理的不同方式,一种就是通过
CCSpriteFrameCache先获取plist文件,该文件是个字典,里面的元素可以通过键值取到,然后在加入到CCSpriteBatchNode中进行渲染,第二种方法就是用CCTexture2D首先通过CCTexture2D * text2d = CCTextureCache::sharedTextureCache()->addImage("enemy_duck.png");
- CCTextureCache 和 CCSpriteFrameCache
- CCSpriteFrameCache和CCTextureCache
- CCTextureCache和CCSpriteFrameCache
- CCSpriteFrameCache、CCTextureCache的使用
- CCTextureCache CCSpriteFrameCache CCSpriteBatchNode
- CCTexture2D CCSpriteBatchNode CCTextureCache CCSpriteFrameCache 分析
- cocos2dx CCTextureCache 、CCSpriteBatchNode 、CCSpriteFrameCache区别
- Cocos2d-x中的 CCSpriteFrameCache , CCTextureCache的使用
- cocos2d-x中的缓存CCTextureCache、CCSPriteFrameCache、CCAnimationCache
- cocos2d-x中的缓存CCTextureCache、CCSPriteFrameCache、CCAnimationCache
- cocos2d-x之CCTextureCache、CCSpriteFrameCache、CCSpriteBatchNode用法总结
- 场景切换时清理缓存!!CCTextureCache、CCSpriteFrameCache、CCAnimationCache
- 1.CCSpriteFrame CCSpriteFrameCache CCTexture CCTextureCache 基本功能与延伸
- Cocos场景切换时清理缓存!!CCTextureCache、CCSpriteFrameCache、CCAnimationCache
- CCSpriteFrameCache和帧动画
- CCSpriteFrameCache和CCTextureCac…
- CCSpriteFrameCache
- CCSpriteFrameCache
- c#与sql数据库连接字符串解析
- SystemClock
- 淘宝搜索算法综述之二:淘宝搜索排序算法的现状
- JS获取和设置光标的位置
- php study 6 string
- CCSpriteFrameCache和CCTextureCache
- [博弈论]Stone
- x264参数介绍(二、分析和视频可用性信息)
- <meta>标签的用法
- C++访问sqlite3实践
- Android游戏开发之处理音乐与音效太鼓达人游戏原理
- NoiseTube 众包项目介绍
- Django 1.5.4 专题11 file uploading and updating database schema
- json中放map集合传到js中的一些处理