我是Cocos2d框架的新手。
我正在尝试从sharedSpriteFrameCache
创建CCSprite
,图像名称为:
// In init method
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"imgFile.plist"];
// In separate method
CCSprite *spBubble = [CCSprite spriteWithSpriteFrameName:@"img1.png"];
现在有时它会在spBubble = [CCSprite spriteWithSpriteFrameName:@"img1.png"];
崩溃因为它无法加载图像。
崩溃日志:
cocos2d:CCSpriteFrameCache:找不到帧"img1.png"
所以我试着通过检查img1.png是否可用
if(![CCSprite spriteWithSpriteFrameName:@"img1.png"])
{
}
但它也在if
条件下坠毁。
那么如何检查img1.png是否可用
如果没有,我可以通过[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"imgFile.plist"];
我找到了解决方案。
在CCSprite.m
中,在+(id)spriteWithSpriteFrameName:(NSString*)spriteFrameName
方法中创建CCSpriteFrame
。当它没有找到图像时,返回的帧是nil
。所以我直接用那个代码来检查帧是否为零。
CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"img1.png"];
if(!frame)
{
// load image from .plist
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"imgFile.plist"];
}
这个技巧对我有效。