CCTextureCache类源码分析(4)
来源:互联网 发布:小型局域网网络搭建 编辑:程序博客网 时间:2024/06/11 20:26
CCTextureCache类源码分析(4)上面三篇分析了CCTextureCache如何加载纹理和缓存纹理,这篇分析下CCTextureCache如何移除已经缓存的纹理。我们缓存过的纹理,如果手动移除,是不会自动移除的。1、 void removeAllTextures(); //移除所有纹理缓存 void CCTextureCache::removeAllTextures(){ m_pTextures->removeAllObjects();}2、 /** Removes unused textures * Textures that have a retain count of 1 will be deleted * It is convenient to call this method after when starting a new Scene * @since v0.8 */ //移除不使用的纹理缓存,那什么是不使用的纹理缓存呢? //引用计数为1的纹理,就是不使用的纹理缓存,那为什么说 //引用计数为1就是不使用的呢?上面三篇分析的过程中提到了 //缓存纹理的引用计数,在CCTextureCache纹理缓存中的纹理引用 //计数为1,如果这个纹理被一个精灵使用,则纹理的引用计数加1, //当这个精灵不使用这个纹理时,那么会对纹理的引用计数减1, //所以如果纹理的引用计数为1,则表明没有精灵引用这个纹理,所以 //就为不使用的纹理。Textures that have a retain count of 1 will be deleted void removeUnusedTextures(); void CCTextureCache::removeUnusedTextures(){ /** Inter engineer zhuoshi sun finds that this way will get better performance */ if (m_pTextures->count()) { // find elements to be removed CCDictElement* pElement = NULL; list<CCDictElement*> elementToRemove; CCDICT_FOREACH(m_pTextures, pElement) { CCLOG("cocos2d: CCTextureCache: texture: %s", pElement->getStrKey()); CCTexture2D *value = (CCTexture2D*)pElement->getObject(); if (value->retainCount() == 1) //引用计数为1,则移除 { elementToRemove.push_back(pElement); } } // remove elements for (list<CCDictElement*>::iterator iter = elementToRemove.begin(); iter != elementToRemove.end(); ++iter) { CCLOG("cocos2d: CCTextureCache: removing unused texture: %s", (*iter)->getStrKey()); m_pTextures->removeObjectForElememt(*iter); } }}3、根据纹理或纹理的key(纹理图片的全路径),这里我们可以直接使用 纹理图片的文件名。 /** Deletes a texture from the cache given a texture */ void removeTexture(CCTexture2D* texture); /** Deletes a texture from the cache given a its key name @since v0.99.4 */ void removeTextureForKey(const char *textureKeyName);
0 0
- CCTextureCache类源码分析(4)
- CCTextureCache类源码分析
- CCTextureCache类源码分析 (1)
- CCTextureCache类源码分析(2)
- CCTextureCache类源码分析(3)
- CCTexture2D CCSpriteBatchNode CCTextureCache CCSpriteFrameCache 分析
- cocos2d-x 2.2.3 CCTextureCache的addImage简单分析
- Nutch 1.3 源码分析 4 Generate 类
- Leveldb源码分析--4
- x264 源码分析 (4)
- thinkphp 源码分析 -4
- openfire源码分析---4
- mina源码分析---4
- Leveldb源码分析--4
- malloc源码分析---4
- jQuery源码分析4
- AngularJS 源码分析4
- red5源码分析---4
- HDU 3537 Daizhenyang's Coin (Mock Turtles 游戏)
- eclipse不自动弹出提示
- 快速排序c++和python对比分析
- C++和双重检查锁定模式(DCLP)的风险
- poj1753
- CCTextureCache类源码分析(4)
- android实现动画效果
- eclipse logcat时间怎么调
- android 线程间的通信
- java spring mybaits
- android volley 下载
- JavaScript嵌入百度地图
- Android移动应用界面的模板化设计
- 对MAC自带的SVN进行升级