您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx之如何生成动画

2013-12-07 23:30 411 查看
我们在***游戏的过程中,看到的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了。

创建一个有着不同行为的动画成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: