1
到目前爲止,我可以追蹤到我在cocos2dx應用程序中遇到的每一個錯誤/崩潰,但現在我感覺自己很愚蠢。 我有一個CCSprite指針數組,我想做的是當玩家有x分數時,從緩存中改變它的顯示幀。Cocos2d-x CCSprite-> setDisplayFrame AccessViolation crash
從plist文件中讀取所有精靈幀,並且精靈在那裏並正在工作,因爲在嘗試切換到新幀之前,我可以看到它沒有任何問題。 「background.png」是一個有效的精靈框架名稱,因爲我用它來創建實際的精靈。
這行工作正常(或至少它似乎工作)
CCSpriteFrame* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("background.png");
問題是這一行:
for (int c = 0; c < sizeof(mBackground)/sizeof(CCSprite*); c++){
mBackground[c]->setDisplayFrame(frame);
}
這其中也崩潰了:
CCSpriteFrame* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("background.png");
mBackground[0]->setDisplayFrame(frame);
我用完了想法,我非常感謝任何幫助。
找到可能的問題: 'CCSpriteFrameCache :: sharedSpriteFrameCache() - > spriteFrameByName( 「background.png」)' 返回空指針。根據文檔,如果找不到該名稱,則返回nil。有趣的是,我使用完全相同的名稱來創建對象。 – LugaidVandroiy 2013-04-11 09:37:48
如果您使用spriteWithFile構造函數創建sprite,那麼如果在那裏沒有這樣的spriteframe,它會將所需的spriteframe添加到緩存中。如果您嘗試從緩存中獲取精靈幀,它將僅返回空指針。 – Morion 2013-04-11 16:40:44