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

cocos2d-x中制作动画

2013-12-23 17:03 351 查看
如何在游戏中生成动画呢?我们在这里介绍两种方法:

第一种方法:使用单个序列帧生成动画:

首先在头文件中定义一个动画的函数:CCAnimate *createAnimate1();

 

然后再源文件中实现动画:

序列帧:name1.png name2.png name3.png name4.png name5.png name6.png

 

CCSprite *mSprite = CCSprite::create(“name1.png”);

mSprite->setPosition(ccp(PositionX,PositionY));

this->addChild(mSprite);

mSprite->runAction(createAnimate1());

 

动画实现部分:

CCAnimate *类名::createAnimate1()

{

     int iFrameNum = 6;

     CCSpriteFrame *frame = NULL;

     CCArray *frameArray = CCArray::create();

 

//使用一个列表保存所有的CCSpriteFrame对象

     for(ing i = 1; i<=iFrameNum)

    {

frame =                                                                                                       CCSpriteFrame::create(CCString::createWithFormat(“name%d.png”,i)->getCString,

CCRectMake(0,0,width,height));

frameArray->addObject(frame);

     }

//使用CCSpriteFrame列表创建动画

CCAnimation *animation = CCAnimation::createWithSpriteFrames(frameArray);

animation->setLoops(-1);//-1表示循环执行动画,0表示不循环执行动画

animation->setDelayPerUnit(0.5f);//0.5f表示每隔0.5秒钟的时间执行一帧

 

//将动画包装成一个动作

CCAnimate *action = CCAnimate::create(animation);

 

return action;

}

 

该方法就是使用单个动画帧实现动画的原理方法;下面我们看看如何使用plist文件和打包图集实现动画。

 

第二种方法:如何使用plist文件来实现动画

首先在头文件中定义一个动画的函数:CCAnimate *createAnimate2();

 

然后再源文件中实现动画:

序列帧:name1.png name2.png name3.png name4.png name5.png name6.png所生成的打包文件分别为:name.plist  name.png

 

CCSprite *mSprite = CCSprite::create(“name1.png”);

mSprite->setPosition(ccp(PositonX,PositionY));

this->addChild(mSprite);

mSprite->runAction(createAnimate2());

 

CCAnimate *类名::createAnimate2()

{

//加载动画帧到缓冲池中

CCSpriteFrameCache *frameCache = CCSpriteFrameCache::sharedSpriteFrameCache();

frameCache->addSpriteFramesWithFile(“name.plist”,”name.png”);

 

int iFrameNum = 6;

CCSpriteFrame *frame = NULL;

CCArray *frameArray = CCArray::create();

 

//用一个列表保存所有的CCSpriteFrame对象

for(int i=1; i<=iFrameNum; i++)

{

//从CCSpriteFrame缓冲池中获取CCSpriteFrame对象

frame = frameCache->spriteFrameByName(CCString::createWithFormat(“name%d.png”,i)->getCString());

frameArray->addObject(frame);

}

 

//使用CCSpriteFrame列表创建动画对象

CCAnimation *animation = CCAnimation::createWithSpriteFrames(frameArray);

animation->setLoops(-1);//-1表示动画循环执行,0代表不循环执行

animation->setDelayPerUnit(0.5f);//0.5f表示的是每隔0.5秒钟执行一帧

 

//将动画包装成一个动作

CCAnimate *action = CCAnimate::create(animation);

return action;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息