CCTextureCache 和 CCSpriteFrameCache
来源:互联网 发布:很红的网络翻唱歌曲 编辑:程序博客网 时间:2024/05/16 17:40
CCTexture2D是一个纹理贴图
CCTexture2D* cache =CCTextureCache::sharedTextureCache()->addImage("hero.png"); CCSprite* sprite =CCSprite::spriteWithTexture(cache);CCTextureCache它相当于CCTexture2D的容器,是内存池,用来缓存CCTexture2D对象的,它内部有一个字典CCMutableDictionarym_pTextures,key为图片的名称,值是CCTexture2D。
CCSpriteBatchNode
它是批处理绘制精灵,主要是用来提高精灵的绘制效率的,需要绘制的精灵数量越多,效果越明显。因为cocos2d-x采用opengles绘制图片的,opengles绘制每个精灵都会执行:open-draw-close流程。而CCSpriteBatchNode是把多个精灵放到一个纹理上,绘制的时候直接统一绘制该texture,不需要单独绘制子节点,这样opengles绘制的时候变成了:open-draw()-draw()…-draw()-close(),节省了多次open-close的时间。CCSpriteBatchNode内部封装了一个CCTextureAtlas(纹理图集,它内部封装了一个CCTexture2D)和一个CCArray(用来存储CCSpriteBatchNode的子节点:单个精灵)。注意:因为绘制的时候只open-close一次,所以CCSpriteBatchNode对象的所有子节点都必须和它是用同一个texture(同一张图片):
在addChild的时候会检查子节点纹理的名称跟CCSpriteBatchNode的是不是一样,如果不一样就会出错,
CCSpriteFrameCache
它是管理CCSpriteFrame的内存池,跟CCTextureCache功能一样,不过跟CCTextureCache不同的是,如果内存池中不存在要查找的帧,它会提示找不到,而不会去本地加载图片。它的内部封装了一个字典:CCDictionary*m_pSpriteFrames,key为帧的名称。CCSpriteFrameCache一般用来处理plist文件(这个文件指定了每个独立的精灵在这张“大图”里面的位置和大小),该文件对应一张包含多个精灵的大图,plist文件可以使用TexturePacker制作。
下面是使用CCSpriteFrameCache的使用代码示例:
CCSpriteFrameCache* cache =CCSpriteFrameCache::sharedSpriteFrameCache(); cache->addSpriteFramesWithFile("animations/grossini.plist","animations/grossini.png"); m_pSprite1 =CCSprite::spriteWithSpriteFrameName("grossini_dance_01.png"); CCSpriteFrameCache * cache = CCSpriteFrameCache::sharedSpriteFrameCache(); cache->addSpriteFramesWithFile("game-art.plist"); CCSpriteFrame * frame = cache->spriteFrameByName("ship-anim0.png"); CCSpriteBatchNode * node =CCSpriteBatchNode::createWithTexture(frame->getTexture()); this->addChild(node,2); for(int i=0;i<<span style="color:#0433ff">5;i++) { CCSprite * sprite =CCSprite::createWithSpriteFrame(frame); sprite->setPosition(ccp(CCRANDOM_0_1()*480,CCRANDOM_0_1()*320)); node->addChild(sprite); }
在这里要注意的就是 两种获得图片纹理的不同方式,一种就是通过
CCSpriteFrameCache先获取plist文件,该文件是个字典,里面的元素可以通过键值取到,然后在加入到CCSpriteBatchNode中进行渲染,第二种方法就是用CCTexture2D首先通过CCTexture2D* text2d=CCTextureCache::sharedTextureCache()->addImage("enemy_duck.png");获得一张贴图,然后在将这些图分别画出来,代码如下
CCTexture2D * text2d = CCTextureCache::sharedTextureCache()->addImage("enemy_duck.png"); if (!CCSprite::initWithTexture(text2d)) { returnfalse; } CCArray * frames = CCArray::create(); float spritewith= text2d->getContentSize().width/10; float hight = text2d->getContentSize().height; for(inti=0;i<<span style="color:#0433ff">10;i++) { CCRect rect= CCRectMake(spritewith*i,0, spritewith, hight); CCSpriteFrame * sprite = CCSpriteFrame::createWithTexture(text2d, rect); frames->addObject(sprite); } CCAnimation * anim = CCAnimation::createWithSpriteFrames(frames,0.08f); CCAnimate * animate = CCAnimate::create(anim); CCRepeatForever *repeate = CCRepeatForever::create(animate); this->runAction(repeate);
- 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
- 海康视频7发布
- 轻松四步解决量产U盘问题【老牌系统】
- Windows7与Window2008 64位IIS7上面DCOM配置Excel、Word等
- java 处理大数据
- 轮询方式实现线程间共享变量
- CCTextureCache 和 CCSpriteFrameCache
- C语言中 const 和 static 和 extern
- Android4.0.x 安全模式的分析
- 第七节, 静态成员变量和静态成员函数
- PowerBuilder 9开发技术讲座-PowerBuilder Native Interface(PBNI)
- 如何使用spflashtool备份mtk rom
- iso-开发基础知识-3- 对象组合和类继承
- 海康视频7 和 DropCam
- FORM主从块头行金额汇总