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;
}
第一种方法:使用单个序列帧生成动画:
首先在头文件中定义一个动画的函数: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;
}
相关文章推荐
- 如何在cocos2d里面用TexturePacker制作可移动的炮炮兵动画
- Cocos2d-x 动画(Animate)的制作
- cocos2d-x v3.0beta2使用cocostudio制作的动画
- 【Cocos2d-x】之使用两张图片制作动画
- cocos2d-x3.1.1动画制作编辑核心代码
- cocos2d-x学习之连帧动画制作
- <cocos2d-x for wp7>动画制作
- iOS的Cocos2d-x工程载入CocoStudio制作的动画素材'xxx.csb/csd'文件,添加自定义用户头像图片到动画。
- <cocos2d-x for wp7>动画制作
- 使用Spine软件制作骨骼动画供Cocos2d-x使用
- 如何在cocos2d里面用TexturePacker制作可移动的炮炮兵动画
- cocos2d-x动画制作(cocos2d-x2.1)
- cocos2d-x中制作动画
- 【Cocos2d-x-js系列】制作人物动画
- cocos2d或者iOS制作视频+虚列动画做游戏时候,视频播放和结束时顿闪问题解决方案
- cocos2d-x如何添加精灵动画(适合于2以上的版本)
- 安卓之动画制作
- 制作android启动第二屏动画
- 制作一个简单的游戏---cocos2d-x-2.2.0
- Cocos2d播放Cocostudio编辑动画