如何在游戏中生成动画呢?我们在这里介绍两种方法:
第一种方法:使用单个序列帧生成动画:
首先在头文件中定义一个动画的函数: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;
}