cocos2dx中的动作、特效、和动画

cocos2dx中的动作、特效、和动画,第1张

概述    Action类继承自CCObject,它有移动速度类,跟随类,以及有限时间动作,其中最后一个分为瞬时动作,和延时动作。     瞬时动作 CCCallFunc 回调 CCFilpX X轴转 CCFilpY Y轴转 CCHide 隐藏 CCPlate 设置位置 CCShow 显示     延时动作 CCBezierBy/To 延贝塞儿曲线运动 CCBlink 闪烁 CCDelayTime 延

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="QQ截图20150316101048.png" alt="wKioL1UGPMfRh3sPAACgLWCdq4o603.jpg" src="http://s3.51cto.com/wyfs02/M00/5B/4D/wKioL1UGPMfRh3sPAACgLWCdq4o603.jpg">

Action类继承自CCObject,它有移动速度类,跟随类,以及有限时间动作,其中最后一个分为瞬时动作,和延时动作。

瞬时动作

CCCallFunc 回调
CCFilpX X轴转
CCFilpY Y轴转
CCHIDe 隐藏
CCPlate 设置位置
CCShow 显示

延时动作

CCBezIErBy/To 延贝塞儿曲线运动
CCBlink 闪烁
CCDelayTime 延时
CCMoveto/By 移动
CCRotateto/By 旋转
CCFadeIn 淡入
CCFadeOut 淡出
CCJumpBy/To 跳跞
CCSeuqence 帧序列,有序执行
CCTintTo 色值渐变动作
CCSpawn
多个动作同一时间进行
CCSaleto/By
放大,缩小
CCAnimate
动画
CCRereate
有限次重复
CCReverseTime
时间逆向动作,通过action->reverse()来取得实例对像
CCRepeateForever
无限次重复动作
CCActionEase
变速动作
CCDeccelAmplitude
有相应幅度的动作,附动作时间,减速
CCAccelAmplitude
有相应幅度的动作,附动作时间,加速
CCAccelDeccelAmplit
有相应幅度的动作,附动作时间,变速

贝塞儿曲线的应用,参数1.动作时间,参数2.贝塞儿曲线的参数值CCBezIErConfig(俩个控制点,一个终点)CCBezIErTo/By的区别,To是绝对位置,By是相对位置。

typedefstruct_ccBezIErConfig{//!endpositionofthebezIErPointendposition;//!BezIErcontrolpoint1PointcontrolPoint_1;//!BezIErcontrolpoint2PointcontrolPoint_2;}ccBezIErConfig;@H_406_301@ 

用法例子如下:

Sprite*spr=(Sprite*)this->getChildByTag(33);ccBezIErConfigconfig;config.controlPoint_1=Point(100,400);config.controlPoint_2=Point(600,400);config.endposition=Point(600,100);spr->runAction(CCBezIErTo::create(2.0,config));@H_406_301@ 

CCFadeIn动作要注意的是首先要把透明度设为0 ,setopacity(0);


基本样条动作

有时会希望用一些非常规轨道来描述的运动轨迹,只要生成离散的几个点,对像就会根据这这几个点模拟路径。三个参数分别是动作时间,点数组,拉力系数。CCCardinalSplineBy/To的区别,To是绝对路径,By是相对路径,定义点数组时,第一个点设置为(0,0),否则起始点被忽略。

缓冲动作,在实现运动的过程中,经常要实现一些加速或减速的动作。Ease系列方法改变了运动的速度,但并没有改变整体时间。分三类:

In action:action(开始的加速动作)

Out action:action(结束的加速动作)

Inout action:action(开始,结束的加速动作)

CCActionEase有很多子类,下面是速度时间坐标图

指数缓冲:EaseExponentialin,EaseExponentialOut,EaseExponentialinOut

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="QQ截图20150316155854.png" alt="wKiom1UGjO2hdONHAABoz1yoqxA592.jpg" src="http://s3.51cto.com/wyfs02/M02/5B/59/wKiom1UGjO2hdONHAABoz1yoqxA592.jpg">

塞因缓冲:EaseSineIn,EaseSineOut,EaseSineInOut

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="QQ截图20150316160107.png" alt="wKiom1UGjWmyLe4yAAB0wJLde8Y514.jpg" src="http://s3.51cto.com/wyfs02/M01/5B/59/wKiom1UGjWmyLe4yAAB0wJLde8Y514.jpg">

跳跃缓冲:EaseBounceIn,EaseBounceOut,EaseBounceInOut

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="QQ截图20150316160300.png" alt="wKiom1UGjd_gR8OAAABy9OrxwBM026.jpg" src="http://s3.51cto.com/wyfs02/M00/5B/59/wKiom1UGjd_gR8OAAABy9OrxwBM026.jpg">

弹性缓冲:EaseElasticIn,EaseElasticOut,EaseElasticInOut

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="QQ截图20150316160827.png" alt="wKiom1UGjzPgGk_8AAB64rgqpTE301.jpg" src="http://s3.51cto.com/wyfs02/M00/5B/59/wKiom1UGjzPgGk_8AAB64rgqpTE301.jpg">

回震缓冲:EaseBackIn,EaseBackOut,EaseBackInOut

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="QQ截图20150316160939.png" alt="wKiom1UGj27TmLabAACKc-awzh8803.jpg" src="http://s3.51cto.com/wyfs02/M00/5B/59/wKiom1UGj27TmLabAACKc-awzh8803.jpg">

组合动作:CCSequence,CCSpawn,CCRepeat,CCrepeatForever


可调整速度动作,可以用它对目标动作封装,实现“慢动作”“快进”的效果。CCSpeed


延时动作:CCDelayTime,就是一段时间啥也不干,就一个参数时间,它一般放在一个CCSquence动作序列中引起一些效果。


函数回调动作CCCallFunc

CCCallFunc

CCCallFunc是执行对应的回调函数,其中回调函数不可带参数.
.CCCallFuncN
CCCallFuncN也是执行对应的回调函数,其中回调函数带一个参数.

CCCallFuncND

CCCallFuncND也是执行对应的回调函数,其中回调函数可带两个参数.


过程动作(载入动作),进度条,CCProgressto,CCProgressFromTo

CCProgressto第一个参娄是时间,第二个参数是结束时图片的显示百分比

CCProgressFromTo第一个时间,第二个是开始时图片显示的百分比,第三个是结束时图片显示百分比,CCProgresstimer,传入精灵对像来定义,通过调用setType函数来设置动画的类型,kCCProgresstimerTypeRadial是圆形扫描动画,kCCProgresstimerTypebar是直线的扫描动画。调用setReverseProgress函数设置正反的方向,kCCprogresstimerTypebar类型通过setbarChangeRate设置水平和竖直的变化量。

boolHelloWorld::init(){if(!Layer::init()){returnfalse;}CCProgressto*progress=CCProgressto::create(2.0,100);CCProgresstimer*time=CCProgresstimer::create(CCSprite::create("GuIDe_light_New.png"));time->setposition(400,240);this->addChild(time);time->setType(kCCProgresstimerTypeRadial);time->runAction(RepeatForever::create(progress));returntrue;}@H_406_301@ 


动画,除了上面的动作外,cocos2d-x还有一种动作,就是动画CCAnimate,要实现CCAnimate,还要定义一些CCAnimation

CCAnimationCache是一个单例,用于缓存所有动画和动画帧,

CCAnimationCache::sharedAnimationCache()->addAnimation(animatin,"run");CCAnimationCache*animCache=CCAnimationCache::sharedAnimationCache();CCAnimation*animi=animCache->animationByname("run");@H_406_301@ 

通过CCAnimationCache::sharedAnimationCache()获得缓存CCAnimationCashe,通过addAnimation函数加入缓存动画,并命名,通过animationByname()取得相应的动画。

CCAnimation动画

CCAnimation*animi=Animation::create();animi->addSpriteFrameWithfile("UI/shengjcg.png");animi->addSpriteFrameWithfile("UI/shengjicg1.png");animi->setDelayPerUnit(0.2);CCAnimate*an=Animate::create(animi);@H_406_301@ 


TexturePacker打包工具的简单用法

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="QQ截图20150317110253.png" alt="wKiom1UHmQiC-8foAACTgM8bAsY157.jpg" src="http://s3.51cto.com/wyfs02/M01/5B/62/wKiom1UHmQiC-8foAACTgM8bAsY157.jpg">

上面的Add Folder打开要打包的一系列图片,选的时候注意一下Allow Rotation选项和Trim选项这全根据情况勾选,默认是勾选的,然后调整大小合适,publicsh导出就可

1.读取pList文件

CCSpriteFrameCache*cache=CCSpriteFrameCache::sharedSpriteFrameCache();cache->addSpriteFramesWithfile("baozha.pList");CCSprite*spr=CCSprite::createWithSpriteFrame(cache->spriteFrameByname("PropsEffect_0_1.png"));@H_406_301@ 



这样就可以通过纹理获得pList文件 中的某个精灵

2.形成CCAnimation

CCAnimation*HelloWorld::GetAnimate(constchar*name,constintcount,floatdelay){CCArray*a=CCArray::array();charstr[100];for(inti=0;i<count;++i){sprintf(str,"%s%d.png",name,i);a->addobject(cache->spriteFrameByname(str));}CCAnimation*animation=CCAnimation::animationWithSpriteFrames(a,delay);returnanimation;}@H_406_301@ 

3.做action操作

CCAnimation*animation=GetAnimate("PropsEffect_0_",6,0.2f);spr->runAction(CCRepeat::create(CCAnimate::create(animation),1));@H_406_301@          总结       

以上是内存溢出为你收集整理的cocos2dx中的动作、特效、和动画全部内容,希望文章能够帮你解决cocos2dx中的动作、特效、和动画所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/web/1048654.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存