gpt4 book ai didi

c++ - Cocos2d-x CCSprite->setDisplayFrame AccessViolation 崩溃

转载 作者:行者123 更新时间:2023-11-30 04:19:18 24 4
gpt4 key购买 nike

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

关于c++ - Cocos2d-x CCSprite->setDisplayFrame AccessViolation 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15945022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com