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 ...
随机推荐
- Laravel5.1学习笔记22 Eloquent 调整修改
Eloquent: Mutators Introduction Accessors & Mutators Date Mutators Attribute Casting Introductio ...
- 全面介绍Android Studio中Git 的使用(一)
来源 :http://blog.csdn.net/gao_chun/article/details/49817229/
- STA之Concepts (1)
Static Timing Analysis is one of the many techniques available to verify the timing of a digital des ...
- 安装好Pycharm后如何配置Python解释器简易教程
呃呃,遇到坑了...... 安装完Python,没有去配置好Python解释器,直接打开Python项目包,去运行程序,程序输出结果只是显示 Process finished with exit co ...
- java_IO_1
public class DirStudy { public static void main(String[] args) { File file = new File("F:/Eclip ...
- HTML5大数据可视化效果(一)彩虹爆炸图
前言 25年过去了,Brooks博士著名的“没有银弹”的论断依旧没有被打破.HTML5也是一样.但这并不妨碍HTML5是一个越来越有威力的“炸蛋”:发展迅速.势不可挡.随着HTML5技术的普及,用HT ...
- P1541 乌龟棋 题解(洛谷,动态规划递推)
题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...
- 洛谷——P2094 运输
P2094 运输 题目描述 现在已知N件商品,和搬运它们其中每一件的费用.现在搬家公司老板Mr.sb决定让我们每次任意选取2件商品.然后这2件商品只算一件商品的费用.但是这个商品的搬运费用是将选出的2 ...
- Python学习:ModuleNotFoundError: No module named 'pygal.i18n' 的解决方法
最近在学<Python编程:从入门到实践>,16.2小结中 from pygal.i18n import COUNTRIES 获取两个字母的国别码,我用的pygal的版本是2.4.0(终端 ...
- 1.Zigbee开发学习资源
http://blog.csdn.net/zhanglianpin/article/details/46907349