动作-CCActionInterval之CCActionEase家族
补间动作也是一个包装器(之前叫补间动画,从字面上讲,叫动作更合适一些。)。你也可以叫他缓释动作。
1.含义
补间动作改变的是,内部动作的执行速率(注意,并没有改变执行的最终效果,和执行的时间。)关于这个含义,我们用图表表示,横轴表示时间,纵轴表示位移。

假设我们有一个动作,4秒内按(100,100)的增量进行移动
1. CCMoveBy::actionWithDuration(4.0f, ccp(100,100));
假设我们的机器比较操蛋,一秒一帧(用绿线切割)。假设初始节点在(0,0)点,那么这四秒移动的点位置分别是(25,25)(50,50)(75,75)(100,100)。
他的位移时间关系就是图上的蓝线,从图上可以清晰看出,移动是按照匀速速率进行的。
现在我们使用CCEaseSineInOut做包装器,包装这个动作:
1. CCEaseSineOut::actionWithAction(CCMoveBy::actionWithDuration(4.0f, ccp(100,100)));
他的位移时间关系变成图上的红线,从图上可以清晰看出,移动是非匀速速率进行的,先慢后快。那么被绿线截取的位移点的位置,也会发生变化。
从这个图可以看出,使用补间动作,并没有改变位移和时间,但是改变了动作的执行速率,从匀速执行变为非匀速执行。
2.原理
通过包装器,每一个补间动画,都改变了内部动作的执行速率,这是通过封装代理update函数完成的,例如前面的CCEaseSineOut。
1. void CCEaseSineOut::update(ccTime time) {
2. m_pOther->update(sinf(time * (float)M_PI_2));
3. }
3.后缀解释
补间动作有三种后缀:
In:表示动作执行先快后慢
Out:表示动作执行先慢后快
InOut:表示动作执行快-慢-快
第二部分:使用补间动作
不同的补间动画有不同的ST图。可以在这里查看和运行效果
http://www.robertpenner.com/easing/easing_demo.html
你可能觉得这种执行方式很奇怪。但这样可以做出很不错的效果,比你自己手动调整要快的多,因为这些曲线都是来自于数学计算,而这些数学公式,都是从实际的物体运行中总结出来的。
使用举例:比如你要做一个皮球落地的动作,就可以用CCEaseBounceOut。具体效果你可以用上面的地址运行一下。
第三部分:CCSpeed
CCSpeed也是一个包装器,区别于补间动作,他是真正可以改变内部动作执行时间(Duration)的。
1. CCActionInterval *move = CCMoveBy::actionWithDuration(3,ccp(350,0));
2. CCSpeed *speed= CCSpeed::actionWithAction(move,2.0f); // 调整为2倍速运行
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
Normal
0
false
10 pt
0
2
false
false
false
EN-US
ZH-CN
X-NONE
$([{£¥·‘“〈《「『【〔〖〝﹙﹛﹝$(.[{£¥
!%),.:;>?]}¢¨°·ˇˉ―‖’”…‰′″›℃∶、。〃〉》」』】〕〗〞︶︺︾﹀﹄﹚﹜﹞!"%'),.:;?]`|}~¢
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
使用举例:这个动作经常用来做慢镜头和快进。
动作-CCActionInterval之CCActionEase家族的更多相关文章
- 动作-CCActionInterval之CCGridAction家族
CCGrid3DAction // 作用:x轴3D反转特效 CCActionInterval *flipX3D= CCFlipX3D::create(4); // 作用:Y轴3D反转特效 CCA ...
- 动作-CCActionInterval之CCAnimation&CCAnimate
动画简单实例 v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#def ...
- 动作之CCActionInterval(持续动作)家族
持续动作,顾名思义,就是该动作的执行将持续一段时间.因此持续动作的静态生成函数,往往附带一个时间值Duration. 持续动作类名后缀:一般有两种后缀,一种是To,一种是By.To表示最终达到的目标值 ...
- Cocos2d-x CCActionInterval
第一部分:CCActionInterval家族(持续动作) 持续动作,顾名思义,就是该动作的执行将持续一段时间.因此持续动作的静态生成函数,往往附带一个时间值Duration.例如: CCAction ...
- [Cocos2d-x For WP8]EaseActions缓动动作
我们用Silverlight框架开发WP8的应用程序的时,编写动画可以使用缓动效果来实现缓动动画对吧,那么在Cocos2d-x框架里面我们一样是可以缓动动作(缓动动画),其实技术的东西都是想通的,如果 ...
- cocos2dx常见的46中+22中动作详解
cocos2dx常见的46中+22中动作详解 分类: iOS2013-10-16 00:44 1429人阅读 评论(0) 收藏 举报 bool HelloWorld::init(){ ///// ...
- 转载cocos2dx的各种动作用法
以下内容来源于:http://www.cnblogs.com/linux-ios/archive/2013/04/06/3001946.html 转载时请保留以上链接. bool HelloWorld ...
- cocos2dx中的动作
CCAction是cocos2dx中专门用来处理动作相关的类,几乎所有的与动作相关的类都是从它派生而来的.而CCAction继承自CCObject class CCFiniteTimeAction : ...
- cocos2d-x 详解之 CCAction(动作)
关于动作部分,总的来说使用起来比较简单,创建一个动作,然后让可渲染节点如精灵去执行这个动作即可.cocos2dx提供了很多类型的动作,使用起来也很方便.本节重点介绍动作CCAction的子类之一时间动 ...
随机推荐
- AfxBeginThread和AfxEndThread+内存泄露
ref http://blog.csdn.net/kut00/article/details/4209680 启动线程: CWinThread* AfxBeginThread( 线程函数, this ...
- JDK版本更换后编译android系统出错
一:javac: 目标发行版 1.5 与默认的源发行版 1.7 冲突 1.设置jdk环境变量 编译android源码只支持jdk 1.6,所以如果需要编译源码必须下载jdk 1.6,不能下载最新的jd ...
- WCF - Versus Web Service
There are some major differences that exist between WCF and a Web service which are listed below. 这里 ...
- 转载:简化IT程序员工作生活的4个窍门
如果可以简化你的生活——少做枯燥的任务,将时间真正地用于完成事情,你愿不愿意去尝试?下面就让我一起来学一下如何让程序员工作生活变得简单的小窍门.如果你敢于倾听自己的心声,你会发现自己一天中的大多数时间 ...
- dom操作之开关灯
<!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/h ...
- Java Memory Management(1)
Java Memory Management, with its built-in garbage collection, is one of the language’s finest achiev ...
- Orchard中的多语言功能
在Orchard中支持了两种本地化的方法: 1.对Orchard应用程序和模块中的一些文本字符串进行本地化.这个就相当程序本身的多语言支持,大多数的CMS系统都支持这一功能,如:DotNetNuke. ...
- spring3 mvc使用注解方式时,不能扫描jar包里面的类
使用eclipse export工具时选中Add directory entries可以解决.
- Prism的IEventAggregator事件聚合器, 事件订阅发布, ViewModel之间的通讯
WPF中时常会遇到ViewModel之间的通讯,ViewModel并不知道自己的View,但是一个View发生的更改需要通知另外一个View. 举一个例子,软件界面上有个人信息,打开一个界面更改用户的 ...
- HDOJ 1863
#include<stdio.h> #include<string.h> int father[105],depth[105]; int dist[105],map[101][ ...