Cocos2d-x-v3动作体系

Cocos2d-x-v3动作体系,第1张

概述Cocos2d-x-v3动作体系         cocos2d-x-v3版本v2的版本有的很大的改动,最直观的是在一些函数的改动和类名的改动上,首先以CC开头的类,都不再使用CC。在我个人的理解上,原来的cocos2d-x是完全从iphone的框架cocos2d移植过来的,代码的风格和编程的思想都及类似于Object-C,除了语法是C++的外,其他就像是OC版的翻译,新的版本更好的体现了跨平台的 Cocos2d-x-v3动作体系

cocos2d-x-v3版本v2的版本有的很大的改动,最直观的是在一些函数的改动和类名的改动上,首先以CC开头的类,都不再使用CC。在我个人的理解上,原来的cocos2d-x是完全从iphone的框架cocos2d移植过来的,代码的风格和编程的思想都及类似于Object-C,除了语法是C++的外,其他就像是OC版的翻译,新的版本更好的体现了跨平台的特性,也更多的运用了C++的一些编码思想和语言特点,更易于各平台的开发者使用。这篇博客的主要内容,是总结cocos2d中行为动作的处理方法和相关函数。

一、瞬时动作

这类行为只能称为动作,不能称作动画,其执行是瞬时的,没有可是化的过程。

cocos2d中常用的瞬时动作有如下几种:

FlipX:关于x轴做镜像变换。

FlipY:关于y轴做镜像变换。

HIDe:隐藏。

Show:显示。

ToggleVisibility:切换隐藏和显示。

Place:将对象放置在某个位置。

二、延时动作

延时动作就是动画,将动作的过程展现出来,cocos2d引擎中的几种延时动作如下:

1. Moveto:将对象移动到某一位置,是绝对位置,移动后不会记录对象的原始位置,动作不能进行反转。例如:

autoaction=Moveto::create(2,Vec2(100,100));//2S时间移动到(100,100)label->runAction(action);//执行动作

2.MoveBy:将对象相对现在的位置移动某个距离,这个移动是相对对象当前位置的,可以反转。

3.JumpTo:和Moveto类似,对象跳动到某一位置,例如:

label->runAction(JumpTo::create(2,100),30,3));//对象在2S内跳三次,每次高度为30像素,跳到(100,100)点

4.JumpBy:和MoveBy类似。

5.BezIErTo:以贝塞尔曲线的方式移动到某一位置,例如:

ccBezIErConfigconfig;config.controlPoint_1=Vec2(300,300);config.controlPoint_2=Vec2(200,200);config.endposition=Vec2(100,100);//设置两个中间点和一个终点label->runAction(BezIErTo::create(2,config));//2S时间通过贝塞尔曲线方式移动

6.BezIErBy:以贝塞尔曲线的方式进行相对移动。

7.Scaleto:相对原始大小缩放到某一尺度。

8.ScaleBy:相对目前大小进行缩放。

9.Rotateto:相对原始状态旋转到某一角度。

10.RotateBy:相对目前转台旋转某个角度。

11.Blink:闪烁动画。

12.TintTo:颜色转化到某一色值

13.TintBy:相对目前色值,颜色相对转变某一色值。

14.Fadeto:变暗到某一透明度

15.FadeIn:淡入动作

16.FadeOut:淡出动作

三、动作的组合方式

cocos2d中不仅为我们提供的各种动作方式,也为我们提供了相关的类用于管理这些动作:

1.动作序列Sequence:这个类可以创建一个动作序列,按序列中动作的顺序依次执行动作,如下:

Sequence*sq=Sequence::create(TintTo::create(2,color3B(123,123,123)),Rotateto::create(2,30),NulL);label->runAction(sq);//创建动作序列,使对象执行先变颜色,在旋转的动画

2.同步动作组Spawn:这个类和Sequence类似,只是他里面的动画会同时一起执行。

3.有限次的循环动作Repeat:这个类可以使某一动作循环执行数次,例如:

Repeat*re=Repeat::create(RotateBy::create(2,5);//旋转5次30度label->runAction(re);

4.无限次循环动作RepeatForever:

RepeatForever*ref=RepeatForever::create(RotateBy::create(2,30));label->runAction(ref);

5.帧动画

cocos2d中同样提供了对帧动画的支持:

//创建设置精灵Sprite*spr=Sprite::create("Closenormal.png");spr->setposition(Vec2(100,100));//创建两帧精灵图片SpriteFrame*frame1=SpriteFrame::create("Closenormal.png",Rect(0,50,50));SpriteFrame*frame2=SpriteFrame::create("CloseSelected.png",50));Vector<SpriteFrame*>arr;arr.pushBack(frame1);arr.pushBack(frame2);//创建动画体第一个参数是帧容器,第二个是每一帧的播放时间,第三个是循环次数Animation*ani=Animation::createWithSpriteFrames(arr,1,1);//创建动作Animate*ant=Animate::create(ani);RepeatForever*ref=RepeatForever::create(ant);spr->runAction(ref);this->addChild(spr);

6.反转动画

可以通过reverse方法获取动作的反转动作,例如:

autolabel=Label::createWithTTF("HelloWorld","Fonts/arial.ttf",24);MoveBy*move=MoveBy::create(3,100));Sequence*sq=Sequence::create(move,move->reverse(),NulL);label->runAction(sq);//label会先相对移动(100,100),再反移动回来

7.动作的速度控制

通过一些速度相关的类,cocos2d可以很轻松的创建出各种线性与非线性的动作。例如:

autolabel=Label::createWithTTF("HelloWorld",24);Moveto*move=Moveto::create(3,Vec2(-200,-200));EaseIn*an=EaseIn::create(move,5);label->runAction(an);//label的运动会先慢后快,速度差为5倍

EaseIn:由慢变快,线性

EaSEOut:由快变慢,线性

EaseInOut:由慢变快再由快变慢

EaseSineIn:由慢变快,正弦规律

EaseSineOut:由快变慢,正弦规律

EaseSineInOut:由慢变快再由快变慢,正弦规律

EaseExponentialin:由慢变快,指数规律

EaseExponentialOut:由快变慢,指数规律

EaseExponentialinOut:由慢变快再由快变慢,指数规律

专注技术,热爱生活,交流技术,也做朋友。

——珲少 QQ群:203317592

总结

以上是内存溢出为你收集整理的Cocos2d-x-v3动作体系全部内容,希望文章能够帮你解决Cocos2d-x-v3动作体系所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存