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?

bumped to the homepage by Community yesterday

This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.

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

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.