Exporting spritesheet for Cocos2d

| | August 4, 2015

I would like to know how people usually save the animations in order to load them easily in Cocos2d with as few hard-code as possible.

E.G. The solution I thought of is to have one plist file containing information about each frame, and the second plist to contain information about each of the animation(name of the animation, which frames to play, and the delay probably).

If this is the correct solution, how can I generate such plist files for spritesheet automatically?

2 Responses to “Exporting spritesheet for Cocos2d”

  1. This is the most basic code of creating and playing an animation in cocos2d:

    auto cacher = SpriteFrameCache::getInstance();
    cacher->addSpriteFramesWithFile("emad-running.plist");
    Sprite* someSprite = Sprite::create();
    
    // load all the animation frames into an array
    Vector<SpriteFrame*> frames;
    for (int i = 0; i <= 10; i++)
    {
        stringstream ss;
        ss << "run_" << i << ".png";
        frames.pushBack(cacher->getSpriteFrameByName(ss.str()));
    }
    
    // play the animation
    Animation* anim = Animation::createWithSpriteFrames(frames, 0.05f);
    someSprite->runAction(Animate::create(anim));
    someSprite->setPosition(X, Y);
    
    this->addChild(someSprite);
    

    And for creating some file like “emad-running.plist”, I suggest Texture Packer. This tool support cocos2d fully. you can import your separated image, and Texture Packer give you two file:

    1. “emad-running.plist”
    2. “emad-running.pvr” OR “emad-running.png” OR …

    This two file complete each other and in code you just need to refer.plist and you are done. :)

    This is how you do in TexturePacker:

    Texture Packer Instruction

  2. Personally I use Texture packer, it works great and is pretty straight forward.

Leave a Reply