码迷,mamicode.com
首页 > 其他好文 > 详细

cocos2dx切换播放的动画

时间:2015-06-11 16:44:08      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

美术资源一共有两段动画的序列帧,一个是手绘马行走图,一个是分子人行走图。

程序要实现的目的就是在同一个位置,点击按钮可以实现2段动画的切换。

因为动画最终是通过sprite的runAction执行的,所以我做了一个封装,返回一个带动画的精灵。

CCSprite* HelloWorld::createAnimateSprite( int start, int end, CCString* startFrame, CCString* formatStr)
{
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

    CCSprite* pSprite = CCSprite::createWithSpriteFrameName(startFrame->getCString());
    pSprite->setPosition(ccp(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2));
    CCArray* pArray = CCArray::create();

    char name[20];
    for (int i = start;i <= end; i++)
    {
        sprintf(name, formatStr->getCString(), i);
        pArray->addObject(CCSpriteFrameCache::sharedSpriteFrameCache() ->spriteFrameByName(name));
    }

    CCAnimation* pAnimation = CCAnimation::createWithSpriteFrames(pArray,0.1f);
    CCAnimate* pAnimate = CCAnimate::create(pAnimation);
    pSprite->runAction(CCRepeatForever::create(pAnimate));
    return pSprite;
}

函数签名中的start和end表示图片名称后缀的起始数字和结束数字,startFrame是起始动画帧的名称,format是通用格式,配合数字组成完整的动画帧名称

CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("walk.plist");
this->addChild(createAnimateSprite(2, 8, CCString::create("zzlx1.JPG"), CCString::create("zzlx%d.JPG")), 0, 1);
this->getChildByTag(1)->setVisible(true);
this->addChild(createAnimateSprite(2, 8, CCString::create("Horse1.jpg"), CCString::create("Horse%d.jpg")), 0, 2);
this->getChildByTag(2)->setVisible(false);

将2个带动画的精灵加入层中,然后在鼠标点击的回调中进行动画的切换,切换采用设置sprite的visible属性的方式

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    CCNode* child1 = this->getChildByTag(1);
    CCNode* child2 = this->getChildByTag(2);
    bool flag = child1->isVisible(); 
    child1->setVisible(!flag);
    child2->setVisible(flag);
}

最后上真相

技术分享

cocos2dx切换播放的动画

标签:

原文地址:http://www.cnblogs.com/beyond-time-space/p/4569154.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!