こんにちは、cocos2d 横スクロールを作っています。ゲームにスプライト シートを使用する必要がありますが、使用すると SIGABRT エラーが発生します。例外ブレークポイントを使用して、問題の原因となっているコードの正確な行を確認し、次の行を取得しました。
NSAssert(spriteFrame!=nil, @"Invalid spriteFrame for sprite");
出力は次のとおりです。
2013-08-24 15:51:28.410 App[2171:a0b] スプライト シート名は characterssheet_poses 2013-08-24 15:51:28.419 App[2171:a0b] bruisedImage = (null) 2013-08-24 15:51 :28.420 App[2171:a0b] cocos2d: CCSpriteFrameCache: フレーム '(null)' が見つかりません 2013-08-24 15:51:28.420 App[2171:a0b] bruisedPose = (null) 2013-08-24 15:51: 28.421 App[2171:a0b] defaultImage = (null) 2013-08-24 15:51:28.421 App[2171:a0b] cocos2d: CCSpriteFrameCache: フレーム '(null)' が見つかりません 2013-08-24 15:51:28.422 App[2171:a0b] defaultPose = (null) 2013-08-24 15:51:28.422 App[2171:a0b] *** -[CCSprite initWithSpriteFrame:] でのアサーションの失敗、
問題を引き起こし、この出力を表示しているコードは次のとおりです。
NSString* spriteSheetName = [theDictionary objectForKey:@"SpriteSheet"];
CCLOG(@"sprite sheet name is %@", spriteSheetName);
NSString* plistName = [NSString stringWithFormat:@"%@.plist", spriteSheetName ];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:plistName ];
NSString* bruisedImage = [theDictionary objectForKey:@"BruisedPose"];
CCLOG(@"bruisedImage = %@",bruisedImage);
bruisedPose = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:bruisedImage];
CCLOG(@"bruisedPose = %@",bruisedPose);
NSString* defaultImage = [theDictionary objectForKey:@"BasePose"];
CCLOG(@"defaultImage = %@",defaultImage);
defaultPose = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:defaultImage];
CCLOG(@"defaultPose = %@",defaultPose);
スプライト シートと .plist ファイルを使用してゲームを作成しています。スプライト シートの .plist ファイルは次のようになります。
ゲーム データに使用している .plist ファイルは次のようになります。