到目前为止,我可以追踪我在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);
我没有想法,我真的很感激任何帮助。
答案 0 :(得分:2)
确保缓存中存在图像。如果不存在,则首先加载spriteframe进行缓存。在更改显示框架之前,还要将mBackground [0]添加到父级。
if(mBackground[0] && frame)
{
mBackground[0]->setDisplayFrame(frame);
}