cocos2d-x学习笔记10:动作3:补间动作
来源:互联网 发布:windows激活工具 小马 编辑:程序博客网 时间:2024/04/28 08:17
cocos2d-x学习笔记10:动作3:补间动作
第一部分:CCActionEase家族(补间动作)
补间动作也是一个包装器(之前叫补间动画,从字面上讲,叫动作更合适一些。)。你也可以叫他缓释动作。
1.含义
补间动作改变的是,内部动作的执行速率(注意,并没有改变执行的最终效果,和执行的时间。)关于这个含义,我们用图表表示,横轴表示时间,纵轴表示位移。
假设我们有一个动作,4秒内按(100,100)的增量进行移动
- CCMoveBy::actionWithDuration(4.0f, ccp(100,100));
假设我们的机器比较操蛋,一秒一帧(用绿线切割)。假设初始节点在(0,0)点,那么这四秒移动的点位置分别是(25,25)(50,50)(75,75)(100,100)。
他的位移时间关系就是图上的蓝线,从图上可以清晰看出,移动是按照匀速速率进行的。
现在我们使用CCEaseSineInOut做包装器,包装这个动作:
- CCEaseSineOut::actionWithAction(CCMoveBy::actionWithDuration(4.0f, ccp(100,100)));
他的位移时间关系变成图上的红线,从图上可以清晰看出,移动是非匀速速率进行的,先慢后快。那么被绿线截取的位移点的位置,也会发生变化。
从这个图可以看出,使用补间动作,并没有改变位移和时间,但是改变了动作的执行速率,从匀速执行变为非匀速执行。
2.原理
通过包装器,每一个补间动画,都改变了内部动作的执行速率,这是通过封装代理update函数完成的,例如前面的CCEaseSineOut。
- void CCEaseSineOut::update(ccTime time)
- {
- m_pOther->update(sinf(time * (float)M_PI_2));
- }
3.后缀解释
补间动作有三种后缀:
In:表示动作执行先快后慢
Out:表示动作执行先慢后快
InOut:表示动作执行快-慢-快
第二部分:使用补间动作
不同的补间动画有不同的ST图。可以在这里查看和运行效果
http://www.robertpenner.com/easing/easing_demo.html
你可能觉得这种执行方式很奇怪。但这样可以做出很不错的效果,比你自己手动调整要快的多,因为这些曲线都是来自于数学计算,而这些数学公式,都是从实际的物体运行中总结出来的。
使用举例:比如你要做一个皮球落地的动作,就可以用CCEaseBounceOut。具体效果你可以用上面的地址运行一下。
第三部分:CCSpeed
CCSpeed也是一个包装器,区别于补间动作,他是真正可以改变内部动作执行时间(Duration)的。
- CCActionInterval *move = CCMoveBy::actionWithDuration(3,ccp(350,0));
- CCSpeed *speed= CCSpeed::actionWithAction(move,2.0f); // 调整为2倍速运行
使用举例:这个动作经常用来做慢镜头和快进。
参考文献:
http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:actions_ease
- cocos2d-x学习笔记10:动作3:补间动作
- cocos2d-x学习笔记10:动作3:补间动作
- cocos2d-x学习笔记10:动作3:补间动作(补充修饰中间阶段)
- (转)cocos2d-x学习笔记10:动作3:补间动作
- Cocos2d-x学习笔记(3) - 动作
- Cocos2d-x动作学习笔记
- cocos2d-x Action:补间动作
- cocos2d-x 动作笔记
- cocos2d-x学习笔记08:动作1:立即动作
- cocos2d-x学习笔记09:动作2:持续动作
- cocos2d-x学习笔记08:动作1:立即动作
- cocos2d-x学习笔记09:动作2:持续动作
- cocos2d-x学习笔记13:动作4:其他动作
- cocos2d-x学习笔记09:动作2:持续动作
- cocos2d-x学习笔记08:动作1:立即动作
- cocos2d-x学习笔记09:动作2:持续动作
- cocos2d-x学习笔记09:动作2:持续动作
- (转)cocos2d-x学习笔记08:动作1:立即动作
- 华为boss力荐公司高层看的一篇文章,很长很经典 很值得一看
- 虚拟继承
- Xen的一些小特性
- cocos2d-x学习笔记09:动作2:持续动作
- PPP和mac的区别
- cocos2d-x学习笔记10:动作3:补间动作
- DAMAGE:After normal block(#****)
- 一些比较零散的问题记录
- cocos2d-x学习笔记11:xcode下编译运行helloworld
- iBatis之SqlMap配置总结
- 编辑框输入数据的时候不能换行怎么办?
- 飞猪投稿伤感日志-我哭了谁知道?
- cocos2d-x学习笔记12:如何将win32移植到iOS
- chmod 777 修改权限