我會在[CCSprite setTexture:]
中設置一個斷點,並從那裏檢查堆棧跟蹤並返回到您的違規呼叫。當然,這隻會在失敗發生的情況下成功。
在我的cocos2d安裝(0.9.5),聲稱在setTexture
可以是:
NSAssert(! usesBatchNode_, @"CCSprite: setTexture doesn't work when the sprite is rendered using a CCSpriteBatchNode");
// accept texture==nil as argument
NSAssert(!texture || [texture isKindOfClass:[CCTexture2D class]], @"setTexture expects a CCTexture2D. Invalid argument");
那麼,你是錯做這類原因。
編輯你對此有何評論後:
您的appDelegate定義大概是:
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[CCDirector sharedDirector] purgeCachedData];
}
嘗試使用:
[[CCTextureCache sharedTextureCache] removeUnusedTextures];
,而不是[[CCDirector sharedDirector] purgeCachedData]
。希望事情會改善。
內存警告後出現問題。因此,它是由於動畫正在利用緩存的紋理圖集和相關工作表時刷新的子畫面緩存。我能做些什麼來處理它? – Sindico
請參閱我的編輯。 – sergio