今天遇到這樣一個問題:緩存
場景A,場景B, A要切換到B。圖片
A中用CCSpriteFrameCache已加載a.plist, CCSpriteBatchNode加載a.png. 含有圖片主角圖片x.pngget
一樣要在B中加載b.plit,b.png,也含有圖片x.png.it
若是直接切換,往B的batchNOde中addchild(x.png)時就是會報錯,即cocos2d-x
pSprite->getTexture()->getName() == m_pobTextureAtlas->getTexture()->getName()。co
主要緣由就是x.png的所在紋理名字是A場景中的,和當前B中的不是一個。字典
因此在B中加載新的前清除緩存,或在A結束前清除。就不會再報錯了。源代碼
我看了下cocos2d-x的源代碼,其在加入圖片內容到字典時,假如key存在就跳過,不用新的覆蓋舊的。bat
而在cocos2d中,是直接覆蓋掉的。不知爲何這樣,我倒以爲直接覆蓋不錯!!