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

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

一.Speed

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

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

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

  1. class CC_DLL Speed : public Action
  2. {
  3. ......
  4. static Speed* create(ActionInterval* action, float speed);
  5. inline float getSpeed(void) const { return _speed; }
  6. inline void setSpeed(float speed) { _speed = speed; }
  7. ......
  8. }

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

举个栗子:

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

二.ActionEase

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

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

  1. class CC_DLL ActionEase : public ActionInterval

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

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

  1. //指数缓冲
  2. class CC_DLL EaseExponentialIn : public ActionEase
  3. class CC_DLL EaseExponentialOut : public ActionEase
  4. class CC_DLL EaseExponentialInOut : public ActionEase
  5.  
  6. //正弦缓冲
  7. class CC_DLL EaseSineIn : public ActionEase
  8. class CC_DLL EaseSineOut : public ActionEase
  9. class CC_DLL EaseSineInOut : public ActionEase
  10.  
  11. //弹性缓冲
  12. class CC_DLL EaseElastic : public ActionEase
  13. class CC_DLL EaseElasticIn : public EaseElastic
  14. class CC_DLL EaseElasticOut : public EaseElastic
  15. class CC_DLL EaseElasticInOut : public EaseElastic
  16.  
  17. //跳跃缓冲
  18. class CC_DLL EaseBounce : public ActionEase
  19. class CC_DLL EaseBounceIn : public EaseBounce
  20. class CC_DLL EaseBounceOut : public EaseBounce
  21. class CC_DLL EaseBounceInOut : public EaseBounce
  22.  
  23. //回震缓冲
  24. class CC_DLL EaseBackIn : public ActionEase
  25. class CC_DLL EaseBackOut : public ActionEase
  26. class CC_DLL EaseBackInOut : public ActionEase
  27.  
  28. //贝塞尔缓冲
  29. class CC_DLL EaseBezierAction : public ActionEase
  30.  
  31. //二次缓冲
  32. class CC_DLL EaseQuadraticActionIn : public ActionEase
  33. class CC_DLL EaseQuadraticActionOut : public ActionEase
  34. class CC_DLL EaseQuadraticActionInOut : public ActionEase
  35.  
  36. //四次缓冲
  37. class CC_DLL EaseQuarticActionIn : public ActionEase
  38. class CC_DLL EaseQuarticActionOut : public ActionEase
  39. class CC_DLL EaseQuarticActionInOut : public ActionEase
  40.  
  41. //五次缓冲
  42. class CC_DLL EaseQuinticActionIn : public ActionEase
  43. class CC_DLL EaseQuinticActionOut : public ActionEase
  44. class CC_DLL EaseQuinticActionInOut : public ActionEase
  45.  
  46. //循环缓冲
  47. class CC_DLL EaseCircleActionIn : public ActionEase
  48. class CC_DLL EaseCircleActionOut : public ActionEase
  49. class CC_DLL EaseCircleActionInOut:public ActionEase
  50.  
  51. //立方缓冲
  52. class CC_DLL EaseCubicActionIn:public ActionEase
  53. class CC_DLL EaseCubicActionOut : public ActionEase
  54. class CC_DLL EaseCubicActionInOut : public ActionEase

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

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

  1. //创建一个sprite
  2. auto sprite = Sprite::create("haha.jpg");
  3.  
  4. //加入
  5. this->addChild(sprite);
  6.  
  7. //创建MoveTo动作
  8. auto _moveTo = MoveTo::create(3.0,Vec2(920,320));
  9.  
  10. //创建正弦缓冲动作
  11. auto _sineEase = EaseSineInOut::create(_moveTo);
  12.  
  13. //运行动作
  14. 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. CF848A From Y to Y

    思路1: 每次贪心地选择满足i * (i - 1) / 2 <= k最大的i并从k中减去i * (i - 1) / 2,直至k为0.由于函数x * (x - 1) / 2的增长速度比2x要慢,所 ...

  2. Python学习日记之正则表达式re模块

    用在线网页测试正则表达式时,JavaScript不支持 零宽度正回顾后发断言 (?<=exp)测试时一直匹配失败 但re模块是支持 (?<=exp) 的 终于脱坑

  3. URI URL URN的区别

    一:什么是URI,URL,URN ? URI:Uniform Resource Identifier,统一资源标识符,是一个用于表示互联网上资源名称的字符串 格式:http://www.xxx.com ...

  4. python自动化--语言基础线程、生产者消费者示例

    进程与线程的区别:进程不共享空间,线程共享地址空间 线程共享空间优缺点:优点:多线程给用户的体验好些,打开时占用的内存比进程少缺点:共享地址空间会相互干扰,甚至有影响 import threading ...

  5. 生产环境4.3.5jboss内存调优

    1.查看jboss的监控工具 http://XXX/jmx-console/htmladaptor 2.查看jvm的监控工具 jdk\bin jvisualvm.exe jmc.exe 3.查看jbo ...

  6. 【笔记JS/HTML/CSS】web中的HTTP协议(1)

    最近都在coursera刷课,加上自己课业也忙起来了,总是忘记写学习笔记ORZ 自省ing... 在写HTML的时候,form表单需要通过HTTP协议向服务器提交.查询数据(如下图) 客户端通过HTT ...

  7. (转)淘淘商城系列——使用Jedis操作集群

    http://blog.csdn.net/yerenyuan_pku/article/details/72862084 通过上文的学习,我相信大家应该已经知道如何搭建Redis集群了,本文我将为大家介 ...

  8. JQurey---新尝试

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. 腾讯云,体验域名注册解析与SSL证书

    体验域名注册解析与SSL证书 购买域名 任务时间:30min ~ 60min 在腾讯云上购买域名 首先需要在腾讯云上购买域名, 点击以下链接可以观看购买操作的指引 如何在腾讯云上购买域名 域名解析 域 ...

  10. HDU 5115 (2014ACM/ICPC亚洲区北京站) D题(Dire Wolf)

    题目传送门 设dp[i][j]为杀掉区间i到j之间的狼需要付出的最小代价,那么dp[i][j]=min{dp[i][k-1]+dp[k+1][j]+a[k]+b[i-1]+b[j+1]} Java代码 ...