cocos2dx之如何生成动画

我们在制作游戏的过程中,看到的sprite都很多不同的行为,其实就是很多张图构成的,我们可以用工具texture Packer来生成plist文件,然后只要读取该图片中的帧数就可以了,我们接下来看代码:

void MySpriteAnimationLayer::initLayer() {
    CCSize s = CCDirector::sharedDirector()->getWinSize();
    CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
    //cache->addSpriteFramesWithFile("animations/grossini.plist");
    cache->addSpriteFramesWithFile("animations/MyTps-hd.plist");
    //
    // Animation using Sprite BatchNode
    //
    m_pSprite1 = CCSprite::createWithSpriteFrameName("grossini_dance_01.png");
    m_pSprite1->setPosition( ccp( s.width/2-80, s.height/2) );

    CCSpriteBatchNode* spritebatch = CCSpriteBatchNode::create("animations/MyTps-hd.png");
    spritebatch->addChild(m_pSprite1);
    addChild(spritebatch);

    CCArray* animFrames = CCArray::createWithCapacity(15);

    char str[100] = {0};
    for(int i = 1; i < 15; i++) 
    {
        sprintf(str, "grossini_dance_%02d.png", i);
        CCSpriteFrame* frame = cache->spriteFrameByName( str );
        animFrames->addObject(frame);
    }

    CCAnimation* animation = CCAnimation::createWithSpriteFrames(animFrames, 0.3f);
    m_pSprite1->runAction( CCRepeatForever::create( CCAnimate::create(animation) ) );
}

 

注意:

    m_pSprite1 = CCSprite::createWithSpriteFrameName("grossini_dance_01.png");
    m_pSprite1->setPosition( ccp( s.width/2-80, s.height/2) );


这里不再是create了,而是createWithSpriteFrameName去给该动画添加一帧。而不是一个单独的sprite了。


创建一个有着不同行为的动画成功!

 

 

你可能感兴趣的:(cocos2dx之如何生成动画)