0

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

EG 我想到的解决方案是有一个 plist 文件,其中包含有关每一帧的信息,第二个 plist 文件包含有关每个动画的信息(动画名称、要播放的帧以及可能的延迟)。

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

4

1 回答 1

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];
}

希望能帮助到你。

于 2013-04-06T18:55:51.733 回答