动作-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的子类之一时间动 ...
随机推荐
- 结构体typedef struct dtuple_struct dtuple_t;
/** Structure for an SQL data tuple of fields (logical record) */ struct dtuple_struct { ulint info_ ...
- c语言main函数的参数argc,argv说明
main函数参数argc,argv说明 C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(i ...
- arcgis for android访问arcgis server上自己制作部署的地图服务
转自:http://gaomw.iteye.com/blog/1110437 本项目的开发环境是eclipse3.5 + ADT11插件+arcgis for andorid 插件 + arcgis ...
- remove all event handlers from a control
The sample code below will remove all Click events from button1 public partial class Form1 : Form { ...
- POJ ---3070 (矩阵乘法求Fibonacci 数列)
Fibonacci Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 ...
- [转]ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)
有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你创建action过滤器.Action过滤器是自定义的Attributes,用来标记添 ...
- 未能找到类型或命名空间“Compare”
在用vs2012 .net Framework4.5 Mvc3做一个MVCMusicStore 的例子时,遇到这样一个问题 解决办法: 具体原因也不是很清楚,据说是引用Compare做验证时会有二 ...
- nyoj VF函数
大意就是: 在1到在10的9次方中,找到各个位数和为固定值s的数的个数, 首先我们确定最高位的个数,为1到9: 以后的各位为0,到9: 运用递归的思想,n位数有n-1位数生成 f(n)(s) +=f( ...
- openStack 使用public key登陆
- 2015 CCPC-C-The Battle of Chibi (UESTC 1217)(动态规划+树状数组)
赛后当天学长就说了树状数组,结果在一个星期后赖床时才有了一点点思路…… 因为无法提交,不确定是否正确..嗯..有错希望指出,谢谢... 嗯..已经A了..提交地址http://acm.uestc.ed ...