我想知道人们通常如何保存动画,以便在Cocos2d中使用尽可能少的硬代码轻松加载动画。
E.G。我想到的解决方案是让一个plist文件包含有关每个帧的信息,第二个plist包含有关每个动画的信息(动画的名称,要播放的帧和可能的延迟)。
如果这是正确的解决方案,我该如何自动为spritesheet生成这样的plist文件?
答案 0 :(得分:0)
您可以使用纹理打包工具来创建精灵地图集和相应的plist。 Zwoptex
对我很有用。一旦你有了png和plist,就可以加载它们
SpriteFrameCache
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"gameSprites.plist"];
此外,您可以为动画帧使用命名约定,例如使用'_index'后缀它们:animFrame_1
,animFrame_2
等等......
然后,您可以使用带有帮助程序的CCAnimation类别来加载给定动画名称和帧数的动画。您可以将下一个代码作为示例.-
+ (CCAnimation *) animationWithFrame:(NSString *) frame frameCount:(int) frameCount startIndex:(int) startIndex delay:(float) delay separator:(NSString *) separator {
// load the ship's animation frames as textures and create a sprite frame
NSMutableArray* frames = [NSMutableArray arrayWithCapacity:frameCount];
CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
int end = frameCount + startIndex;
for (int i = startIndex; i < end; i++)
{
NSString* file = [NSString stringWithFormat:@"%@%@%i.png", frame, separator, i];
CCSpriteFrame* frame = [frameCache spriteFrameByName:file];
[frames addObject:frame];
}
// Return an animation object from all the sprite animation frames
return [CCAnimation animationWithFrames:frames delay:delay];
}
希望它有所帮助。