1

到目前为止,我可以追踪我在 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);

我的想法用完了,我真的很感激任何帮助。

4

1 回答 1

2

确保图像存在于缓存中。如果不存在,则首先加载 spriteframe 以进行缓存。在更改显示框架之前,还将 mBackground[0] 添加到父级。

if(mBackground[0] && frame)
{
    mBackground[0]->setDisplayFrame(frame);
}
于 2013-04-11T09:35:00.520 回答