导出cocos2d的spritesheet

时间:2013-04-06 18:12:55

标签: iphone ios cocos2d-iphone sprite-sheet

我想知道人们通常如何保存动画,以便在Cocos2d中使用尽可能少的硬代码轻松加载动画。

E.G。我想到的解决方案是让一个plist文件包含有关每个帧的信息,第二个plist包含有关每个动画的信息(动画的名称,要播放的帧和可能的延迟)。

如果这是正确的解决方案,我该如何自动为spritesheet生成这样的plist文件?

1 个答案:

答案 0 :(得分:0)

您可以使用纹理打包工具来创建精灵地图集和相应的plist。 Zwoptex对我很有用。一旦你有了png和plist,就可以加载它们 SpriteFrameCache

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"gameSprites.plist"];

此外,您可以为动画帧使用命名约定,例如使用'_index'后缀它们:animFrame_1animFrame_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];
}

希望它有所帮助。