到目前为止,我可以跟踪我在cocos2dx应用程序中遇到的每个错误/崩溃,但是现在我感到自己很笨。
我有一个CCSprite指针数组,我想做的是在玩家获得x得分时从缓存中更改其显示帧。

所有的sprite框架都是从plist文件读取的,并且sprite在其中并且可以正常工作,因为在尝试切换到新框架之前,我可以看到它没有任何问题。 “background.png”是有效的Sprite框架名称,因为我正在使用它来创建实际的Sprite。

这条线工作正常(或至少看起来有效)

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]添加到父对象。

if(mBackground[0] && frame)
{
    mBackground[0]->setDisplayFrame(frame);
}

08-27 05:37