兩個cache:CCTextureCache、CCSpriteFrameCache的使用
[i][b]本文為firedragonpzy原創,轉載務必在明顯處註明:
轉載自【Softeware MyZone】原文連結: http://www.firedragonpzy.com.cn/index.php/archives/312[/b]
[/i]
轉載自【Softeware MyZone】原文連結: http://www.firedragonpzy.com.cn/index.php/archives/312[/b]
[/i]
注意cache的使用:
1、CCSpriteFrameCache使用:
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("animations/grossini.plist");
在離開的時候:
void SpriteFrameTest::onExit()
{
SpriteTestDemo::onExit();
CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->removeSpriteFramesFromFile("animations/grossini.plist");
或者:CCSpriteFrameCache::sharedSpriteFrameCache()->removeUnusedSpriteFrames();
}
大家先看看sharedSpriteFrameCache的原始碼:
CCSpriteFrameCache* CCSpriteFrameCache::sharedSpriteFrameCache(void)
{
if (! pSharedSpriteFrameCache)
{
pSharedSpriteFrameCache = new CCSpriteFrameCache();
pSharedSpriteFrameCache->init();
}
return pSharedSpriteFrameCache;
}
CCSpriteFrameCache::~CCSpriteFrameCache(void)
{
CC_SAFE_RELEASE(m_pSpriteFrames);
CC_SAFE_RELEASE(m_pSpriteFramesAliases);
}
並沒有autorelease,不會持有,當一釋放的時候就會被刪除
2、CCTextureCache使用:
SpriteNewTexture::SpriteNewTexture()
{
setIsTouchEnabled( true );
CCNode* node = CCNode::node();
addChild(node, 0, kTagSpriteBatchNode);
m_texture1 = CCTextureCache::sharedTextureCache()->addImage("Images/grossini_dance_atlas.png");
m_texture1->retain();
m_texture2 = CCTextureCache::sharedTextureCache()->addImage("Images/grossini_dance_atlas-mono.png");
m_texture2->retain();
m_usingTexture1 = true;
for(int i=0;i<30;i++)
addNewSprite();
}
SpriteNewTexture::~SpriteNewTexture()
{
m_texture1->release();
m_texture2->release();
}
大家先看看sharedTextureCache的原始碼:
CCTextureCache * CCTextureCache::sharedTextureCache()
{
if (!g_sharedTextureCache)
g_sharedTextureCache = new CCTextureCache();
return g_sharedTextureCache;
}
CCTextureCache::~CCTextureCache()
{
CCLOGINFO("cocos2d: deallocing CCTextureCache.");
CC_SAFE_RELEASE(m_pTextures);
}
也是沒有autorelease,不會持有,當一釋放的時候就會被刪除,若想持有,按照上述例子retain和release
相關文章
- cocos2dx之CCSpriteFrameCache
- 管理叢集資料庫的兩個使用者與兩個命令資料庫
- 索引使用最佳化的兩個操作索引
- 使用兩個FIFO完成流水操作
- 使用 jOOQ 連線兩個表
- Python:兩個使用單例模式的方法Python單例模式
- 轉_Buffer Cache的原理及使用
- 使用LinkedHashMap來實現一個使用LRU(Least Recently Used)演算法的cacheHashMapAST演算法
- 使用RecyclerView的兩個非傳統型崩潰View
- Service Worker Cache 和 HTTP Cache 聯合使用的場景討論HTTP
- Spring Cache的基本使用與分析Spring
- Guava Cache使用的三種姿勢Guava
- Spring Cache + Caffeine的整合與使用Spring
- HttpRuntime.Cache的使用經驗HTTP
- 使用sequence的cache特性時要注意的
- 推薦兩個好用的 React 庫以及使用後的感想React
- 微軟BI 之SSIS 系列 - Lookup 元件的使用與它的幾種快取模式 - Full Cache, Partial Cache, NO Cache...微軟元件快取模式
- js不使用第三個變數交換兩個變數的值JS變數
- 使用PL/SQL找到兩個表中的相似值FKSQL
- windows上使用telnet時遇到的兩個錯誤Windows
- 使用select,兩個case 讀取 同一個chan 中的資料,兩個case都可能被執行到
- Oracle兩個使用細節知識點Oracle
- oracle的兩個bugOracle
- 使用者許可權的兩個檢視的區別
- 使用TimeSpanC#中使用TimeSpan計算兩個時間的差值C#
- 不使用臨時變數交換兩個變數的值變數
- 使用兩個context實現CLOSE包的超時等待Context
- Nginx模組fastcgi_cache的幾個注意點NginxAST
- 學習筆記:cache 和spring cache 技術2--spring cache 的基本使用 、spring-Redis整合筆記SpringRedis
- iPhone的兩個目錄。iPhone
- 遇到ASM的兩個BUGASM
- PostgreSQL的兩個模板庫SQL
- 兩個重要的等待事件!事件
- 使用django 的cache設定token的有效期Django
- 編寫js比較兩個數的最大值(使用者依次輸入兩個數,最後彈出最大的那個值)JS
- ASP.NET CORE CACHE的使用(含MemoryCache,Redis)ASP.NETRedis
- oracle result cache 結果集快取的使用Oracle快取
- 刷題總結:使用Python-雜湊表——兩數之和、兩個陣列的交集Python陣列