变速动作和复合动作类似。也是一种特殊的动作,它能够把不论什么动作依照改变后的速度运行。变速动作与复合动作最大的差别就是复合动作仅仅是单纯的组合一系列动作,而变速的做在组合一系列动作后还要去改变动作的运行速度。

变速动作主要分为2大类:Speed和ActionEase

一.Speed

用于线性地改变某个动作的速度,也就是说成倍数的改变某动作的总体速度。

Speed相当于一个包装器,将须要改变速度的动作包装到当中。

Speed类源代码能够在CCAction类中看到:

class CC_DLL Speed : public Action
{
......
static Speed* create(ActionInterval* action, float speed);
inline float getSpeed(void) const { return _speed; }
inline void setSpeed(float speed) { _speed = speed; }
......
}

能够看到。Speed类是直接继承自Action类的。其create()方法接收2个參数。第一个是其要包装的动作。必须是ActionInterval类型的动作,即简单的持续动作或复合动作,不能够是即时动作。第二个參数是一个float类型的速度值speed,这个speed就是该方法要包装的动作原来运行速度的倍数,比方speed=0.5。代表包装后速度变为原来的0.5倍,speed=2。代表包装后速度是原来速度的2倍。

举个栗子:

//创建一个sprite
auto sprite = Sprite::create("haha.jpg"); //加入
this->addChild(sprite); //创建MoveTo动作
auto _moveTo = MoveTo::create(3.0,Vec2(920,320)); //创建Speed变速动作
//參数:1.动作 2.所包装动作原来速度的倍数
auto _speed = Speed::create(_moveTo,2); //运行动作
sprite->runAction(_speed);

二.ActionEase

Speed尽管能改变动作的速度,但仅仅能按比例改变速度。ActionEase能够实现动作的速度由快到慢、速度随时间改变的运动。该类包括好多种类的缓冲运动:指数缓冲、正弦缓冲、弹性缓冲、跳跃缓冲和回震缓冲等等。每类缓冲运动基本都包括3个不同一时候期的变换:In、Out和InOut,这3个变换有是什么呢?简单来说。In是在运动起始时加速。Out是在运动快结束时减速,InOut包括两者。就是先加速后减速

我们能够先看一下ActionEase类的源代码

class CC_DLL ActionEase : public ActionInterval

这句声明能够看到,ActionEase类是继承自ActionInterval类,所以它也是一种持续动作

以下是全部种类缓冲运动的声明:

//指数缓冲
class CC_DLL EaseExponentialIn : public ActionEase
class CC_DLL EaseExponentialOut : public ActionEase
class CC_DLL EaseExponentialInOut : public ActionEase //正弦缓冲
class CC_DLL EaseSineIn : public ActionEase
class CC_DLL EaseSineOut : public ActionEase
class CC_DLL EaseSineInOut : public ActionEase //弹性缓冲
class CC_DLL EaseElastic : public ActionEase
class CC_DLL EaseElasticIn : public EaseElastic
class CC_DLL EaseElasticOut : public EaseElastic
class CC_DLL EaseElasticInOut : public EaseElastic //跳跃缓冲
class CC_DLL EaseBounce : public ActionEase
class CC_DLL EaseBounceIn : public EaseBounce
class CC_DLL EaseBounceOut : public EaseBounce
class CC_DLL EaseBounceInOut : public EaseBounce //回震缓冲
class CC_DLL EaseBackIn : public ActionEase
class CC_DLL EaseBackOut : public ActionEase
class CC_DLL EaseBackInOut : public ActionEase //贝塞尔缓冲
class CC_DLL EaseBezierAction : public ActionEase //二次缓冲
class CC_DLL EaseQuadraticActionIn : public ActionEase
class CC_DLL EaseQuadraticActionOut : public ActionEase
class CC_DLL EaseQuadraticActionInOut : public ActionEase //四次缓冲
class CC_DLL EaseQuarticActionIn : public ActionEase
class CC_DLL EaseQuarticActionOut : public ActionEase
class CC_DLL EaseQuarticActionInOut : public ActionEase //五次缓冲
class CC_DLL EaseQuinticActionIn : public ActionEase
class CC_DLL EaseQuinticActionOut : public ActionEase
class CC_DLL EaseQuinticActionInOut : public ActionEase //循环缓冲
class CC_DLL EaseCircleActionIn : public ActionEase
class CC_DLL EaseCircleActionOut : public ActionEase
class CC_DLL EaseCircleActionInOut:public ActionEase //立方缓冲
class CC_DLL EaseCubicActionIn:public ActionEase
class CC_DLL EaseCubicActionOut : public ActionEase
class CC_DLL EaseCubicActionInOut : public ActionEase

能够看出,ActionEase类提供了的各种缓冲方式的子类。每一种缓冲方式(贝塞尔缓冲除外)基本都分为In、Out和InOut三种不同一时候期的变换。

以下来举个使用ActionEase的栗子:

//创建一个sprite
auto sprite = Sprite::create("haha.jpg"); //加入
this->addChild(sprite); //创建MoveTo动作
auto _moveTo = MoveTo::create(3.0,Vec2(920,320)); //创建正弦缓冲动作
auto _sineEase = EaseSineInOut::create(_moveTo); //运行动作
sprite->runAction(_sineEase);

其它缓冲类型的动作的用法也都与上面的样例一样。仅仅是函数名不同。

话说我试了好几种,认为这么多种类的运动方式还真看不出来太大的差别,反正我认为看起来都几乎相同O(∩_∩)O哈哈~。

以上。

COCOS学习笔记--变速动作Speed和ActionEase的更多相关文章

  1. COCOS学习笔记--即时动作ActionInstant

    Cocos引擎中的动作类的关系图例如以下: 能够看出,Action是继承自Ref类的,之前我的博客中也有讲过,Ref类是cocos2dx全部类的基类.动作类(Action)是全部动作的基类.它通过cr ...

  2. COCOS学习笔记--持续动作ActionInterval

    上一篇博客介绍了即时动作ActionInstant.与即时动作相对的是持续动作ActionInterval. 顾名思义,持续动作就是须要一段时间来持续运行的动作,而且在有限时间内改变运行对象的一些属性 ...

  3. COCOS学习笔记--重力感应Acceleration

    Cocos2dx重力感应Acceleration,准确来说叫加速度计,加速度计能够感应设备上X.Y.Z轴方向上线性加速度的变化.事实上叫"重力感应"或"重力加速度计&qu ...

  4. 重温JSP学习笔记--JSP动作标签

    上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...

  5. cocos学习笔记:快速上手

    cc.Class({ //奇怪的语法风格,cc.class, extends: cc.Component, //扩展自cc.Component properties: { //类的属性设置 jumpH ...

  6. COCOS学习笔记--Cocod2dx内存管理(三)-Coco2d-x内存执行原理

    通过上两篇博客.我们对Cocos引用计数和Ref类.PoolManager类以及AutoreleasePool类已有所了解,那么接下来就通过举栗子来进一步看看Coco2d-x内存执行原理是如何的. / ...

  7. COCOS学习笔记--关于使用cocostudio打安卓包

    我在之前的博客里也写到过,如今cocos引擎提供了一键打包.很方便. 今天正好做个測试,想用引擎的一键打包弄个apk的安卓包.以下就简介一下详细过程和自己的一些理解: 先说一下项目背景,因为我的电脑是 ...

  8. COCOS学习笔记--粒子系统

    一.粒子系统的简单介绍 粒子系统是指计算机图形学中模拟特定现象的技术,它在模仿自然现象.物理现象及空间扭曲上具备得天独厚的优势,为我们实现一些真实自然而又带有随机性的特效(如爆炸.烟花.水流)提供了方 ...

  9. 1.2(学习笔记) JSP动作元素

    动作元素 jsp:useBean:根据指定类实例化一个对象,类似Preson per = new Preson(); <jsp:useBean id="对象名" class ...

随机推荐

  1. LN : leetcode 515 Find Largest Value in Each Tree Row

    lc 515 Find Largest Value in Each Tree Row 515 Find Largest Value in Each Tree Row You need to find ...

  2. [ SPOJ RESTACK ] Restacking haybales

    \(\\\) Description 给出一个环,每个位置有一个初值 \(A_i\),有一个目标值 \(B_i\),保证 \(\sum A_i=\sum B_i\) 每个位置只能把值分给隔壁的,每次分 ...

  3. C_动态库|静态库

    动态库 动态链接库简称DLL,同时以.dll 为后缀,主要用于提供代码和数据 dll 并不是所有数据都能被访问到,必须要进行导出 动态链接库在内存中始终只保存了一份数据,起到了节约内存的作用 生成动态 ...

  4. js判断是安卓 还是 ios webview

    判断原理:JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本.JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来 ...

  5. 01C++编辑编译运行环境

    C++编辑编译运行环境 Bloodshed Dev-C++ Microsoft Visual Studio

  6. Codeforces985E. Pencils and Boxes (单调队列)

    题意:n个数 把他们放进一些盒子里 每个盒子最少放k个数 且最小和最大的差不能大于d 题解:显然排个序 对于当前点 存一下前面有哪些节点可以当作结尾 那么就可以枚举这些点的下一个点作为起点能否和当前点 ...

  7. nginx配置X-Forwarded-For 防止伪造ip

    网上常见nginx配置ip请求头 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 风险: 用于可以通过自己设置请求头来伪造ip ...

  8. Linux(Centos7)下搭建SVN服务器(新手上路)

    以前都是别人直接给地址在svn上,下载或者上传东西,如今要自己建一个版本库用来存放东西.1.安装svnyum install -y subversion 2.查看svn安装位置还有哪些文件rpm -q ...

  9. 迭代器,生成器(generator)和Promise的“微妙”关系

    需要Promise源码版的朋友:传送链接 本文主要讲述(iterator)和生成器*/yield之间的联系和各自的用法,以及生成器的高配版本aysnc/await的使用. 大纲: 迭代器(iterat ...

  10. 面试总结——Java高级工程师(一)

    一.无笔试题 不知道是不是职位原因还是没遇到,面试时,都不需要做笔试题,而是填张个人信息表格,或者直接面试 二.三大框架方面问题 1.Spring 事务的隔离性,并说说每个隔离性的区别 解答:spri ...