COCOS学习笔记--变速动作Speed和ActionEase
变速动作和复合动作类似。也是一种特殊的动作,它能够把不论什么动作依照改变后的速度运行。变速动作与复合动作最大的差别就是复合动作仅仅是单纯的组合一系列动作,而变速的做在组合一系列动作后还要去改变动作的运行速度。
变速动作主要分为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的更多相关文章
- COCOS学习笔记--即时动作ActionInstant
Cocos引擎中的动作类的关系图例如以下: 能够看出,Action是继承自Ref类的,之前我的博客中也有讲过,Ref类是cocos2dx全部类的基类.动作类(Action)是全部动作的基类.它通过cr ...
- COCOS学习笔记--持续动作ActionInterval
上一篇博客介绍了即时动作ActionInstant.与即时动作相对的是持续动作ActionInterval. 顾名思义,持续动作就是须要一段时间来持续运行的动作,而且在有限时间内改变运行对象的一些属性 ...
- COCOS学习笔记--重力感应Acceleration
Cocos2dx重力感应Acceleration,准确来说叫加速度计,加速度计能够感应设备上X.Y.Z轴方向上线性加速度的变化.事实上叫"重力感应"或"重力加速度计&qu ...
- 重温JSP学习笔记--JSP动作标签
上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...
- cocos学习笔记:快速上手
cc.Class({ //奇怪的语法风格,cc.class, extends: cc.Component, //扩展自cc.Component properties: { //类的属性设置 jumpH ...
- COCOS学习笔记--Cocod2dx内存管理(三)-Coco2d-x内存执行原理
通过上两篇博客.我们对Cocos引用计数和Ref类.PoolManager类以及AutoreleasePool类已有所了解,那么接下来就通过举栗子来进一步看看Coco2d-x内存执行原理是如何的. / ...
- COCOS学习笔记--关于使用cocostudio打安卓包
我在之前的博客里也写到过,如今cocos引擎提供了一键打包.很方便. 今天正好做个測试,想用引擎的一键打包弄个apk的安卓包.以下就简介一下详细过程和自己的一些理解: 先说一下项目背景,因为我的电脑是 ...
- COCOS学习笔记--粒子系统
一.粒子系统的简单介绍 粒子系统是指计算机图形学中模拟特定现象的技术,它在模仿自然现象.物理现象及空间扭曲上具备得天独厚的优势,为我们实现一些真实自然而又带有随机性的特效(如爆炸.烟花.水流)提供了方 ...
- 1.2(学习笔记) JSP动作元素
动作元素 jsp:useBean:根据指定类实例化一个对象,类似Preson per = new Preson(); <jsp:useBean id="对象名" class ...
随机推荐
- springboot与dubbo整合遇到的坑
整合环境: dubbo 2.6.2 springboot 2.1.5 遇到的问题:服务一直无法注册到zookeeper注册中心 项目结构: 使用application.properties文件: 配置 ...
- Python学习日记之练习代码
# -*- coding:utf-8 -*- number = 23 test=True while test: guess=int(raw_input('输入数字')) if guess==numb ...
- C++(Typedef声明)
typedef 声明: 使用 typedef 为一个已有的类型取一个新的名字.下面是使用 typedef 定义一个新类型的语法: typedef type newname; 例如,下面的语句会告诉编译 ...
- python对象以及pickle腌制
#python对象 1.什么是python的对象 2.详解pickle腌制 1.什么是python的对象 Python的内置的对象类型主要有数字.字符串.列表.元组.字典.集合等等.其实,在pytho ...
- 三维重建:GitHub百度Apollo 2.0
GitHub:https://github.com/ApolloAuto/apollo 1. 关于Apollo的数据:Apollo的数据会如何开放? 自动驾驶数据将包括具有高分辨率图像和像素级别标注的 ...
- C++11:using 的各种作用
C++11中using关键字的主要作用是:为一个模板库定义一个别名. 文章链接:派生类中使用using别名改变基类成员的访问权限 一.<Effective Modern C++>里有比较 ...
- Spring scheduled cron 表达式
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天( ...
- WEB前端响应式布局之BootStarp使用
1.Bootstrap简介:1. 概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JavaScript 的 ...
- First Project -用函数写的ATM+购物商城程序
作业需求:模拟实现一个ATM + 购物商城程序 额度15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...
- centos 搭建pptp
很多朋友不会在CENTOS 在安装vpn,因为对于菜鸟来说安装VPN的确是个头晕的事情,特别是安装openvpn,不过安装pptp就稍微简单一点,国内网上有很多安装pptp的教程,但是都很繁杂,我在国 ...