和屌丝一起学cocos2dx-基本动画制作优化篇

声  明


       本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。

gl.paea.cn版权所有。




       Hello,欢迎回到“和屌丝一起学cocos2dx”系列教程,上节我们说了基本动画制作,之后,你实验了吗?可以成功吧,嘿嘿,其实逐步写过程是让大家了解一下实现的步骤,这节呢,我们优化一下代码。来看看能不能有更好的方法。好了,一起来吧。


【一】:函数


       上节我们是一步一步的去实现了每个动作,但是这样操作会大大的浪费我们的时间,那我们怎么来优化他呢,这里就要和大家说的一个新的东西CCAnimate动漫对象,他会实现动漫的基本功能,所以直接调用会省很多事。我们来看看他的函数。


1.创建

CCAnimation::create();

CCAnimation::createWithSpriteFrames(帧数组,帧间隔);

//创建一个动画的帧序列信息,其中包含帧间隔、循环次数。

CCAnimate::create(CCAnimation对象);

//根据CCAnimation中的帧序列、帧间隔,不断地切换精灵帧,形成动画效果。



2.函数

setDelayPerUnit();                             //设置帧间隔时间。(这个必须设置)

setRestoreOriginalFrame(bool);      //动画播放完之后会不会回到第一帧

setLoops();                                          //循环次数(-1为无限循环)

setFrames(帧数组);                            //设置动画帧数组




【二】:示例


1.新建项目Justgame2

2.载入上节我们用的rw.png和rw.plist文件



Justgame.h


这里啥也不用动,不用更新函数,也不用设置变量。




Justgame.cpp


//-new-//

CCSize mysize=CCDirector::sharedDirector()->getWinSize();

//把rw.plist加入缓存帧

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("rw.plist");

//创建1个sprite精灵,使用第一张图

CCSprite * sp=CCSprite::createWithSpriteFrameName("r1.png");

sp->setPosition(ccp(50,mysize.height/2));

this->addChild(sp);

//创建帧数组

char str[50];

CCArray * animatearray=CCArray::createWithCapacity(4);

   for(int i=1;i<5;i++){<>

   sprintf(str,"r%i.png",i);

   CCSpriteFrame * frame=CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str);

   animatearray->addObject(frame);

}

//创建CCAnimation对象

CCAnimation * ma=CCAnimation::createWithSpriteFrames(animatearray,0.2f);

ma->setLoops(-1);

//创建CCAnimate对象

CCFiniteTimeAction * an=CCAnimate::create(ma);

CCActionInterval * run=CCMoveTo::create(15.0f,ccp(mysize.width-20,mysize.height/2));

CCFiniteTimeAction * spw=CCSpawn::create(an,run,NULL);

sp->runAction(spw);

//-new-//




       好了运行一下看看。



       OK,成功。


       最后还要说一下,使用缓存帧创建动画, 文件会被缓存起来占用内存,所以,我们不用了,记得要用


       CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFrameByName();


       把缓存的文件删掉哦,要不然一多的话。。。。


       你懂得


本节DEMO下载


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值