Cocos2d-x CCSprite->setDisplayFrame AccessViolation crash
Cocos2d-x CCSprite->setDisplayFrame AccessViolation crash
到目前为止,我可以追踪cocos2dx应用程序中的每个错误/崩溃,但现在我觉得自己很笨。我有一个CCSprite指针数组,我想做的是当玩家有x分数时,从缓存中改变它的显示帧。
所有的精灵帧都是从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);
我实在想不出好主意了,请大家帮帮我。
确保图像存在于缓存中。如果不存在,那么首先加载spriteframe到缓存。在更改显示框架之前,还可以将mBackground[0]添加到parent。
if(mBackground[0] && frame)
{
mBackground[0]->setDisplayFrame(frame);
}