[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