Cocos2d:如何检查精灵框架名称是否可用



我是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"];
}  

这个技巧对我有效。

相关内容

最新更新