CCActionEase的实现原理
来源:互联网 发布:淘宝豆豆鞋 编辑:程序博客网 时间:2024/06/04 21:16
案例
在一段时间(duration)内将Sprite移动到B点,可以使用CCMoveTo来实现。CCMoveTo是实现匀速运动,如果要实现非匀速运动,可以用CCActionEase对CCMoveTo进行装饰(Decorator)(真正使用的是其子类,子类实现了具体的非匀速运动方式)。
问题
能够将匀速变为非匀速的实现原理是什么?或者更进一步,改变CCActionInterval(CCMoveTo是ActionInterval中的一种)的行为是怎样实现的?
原理
其原理是将自然时间(也就是我们的时钟上的时间)与实际运动时间进行了一个映射,也就是说,CCActionEase是在总的运动时间不变的情况下,改变了时间的快慢。这样的映射很多,具体可以参考:http://hosted.zeh.com.br/tweener/docs/en-us/misc/transitions.html,在http://www.robertpenner.com/easing/easing_demo.html中还可以观看一些演示效果。
当调用CCSprite::runAction时,此action被加到CCActionManager中进行管理。当需要更新一帧,CCDirector会调用CCActionManager::update(deltaTime)。此就去会让它所管理的没有超时的action更行更新update。在此之前所使用的时间都还是自然时间。从action::update开始,便开始使用实际运动时间。具体过程可以用下图来表示:
以CCEaseIn为例,它在update方法中,将实际运动时间变为pow(ratioOfTimeElapsed, rate),其中rate为松弛(Ease)系数,典型的如2,3。
- CCActionEase的实现原理
- CCActionEase
- CCActionEase 笔记
- CCActionEase(1)
- CCActionEase(2)
- CCActionEase(3)
- CCActionEase(4)
- CCActionEase详解
- CCActionEase源码分析
- WM_COPYDATA的实现原理
- JBPM的实现原理
- XIo的实现原理
- 搜索引擎的实现原理
- 搜索引擎的实现原理
- udev的实现原理
- udev的实现原理
- Random的实现原理
- 飞鸽传书的实现原理
- 1.预备知识
- Could not open PortletContext resource [/com/rujuan/model/SqlMapConfig.xml]
- 极限来电屏蔽
- UML类图符号 各种关系说明以及举例
- Tyvj Q1024(double的使用)
- CCActionEase的实现原理
- nginx apache 区别
- Golf Range Finder 高尔夫激光测距仪和GPS测距仪
- oracle 11g 卸载 客户端卸载
- 用C实现PHP扩展类
- 329. Not to know what happened before one was born is always to be a child.不懂世故,幼稚可笑
- 参与招聘随想
- Urban Airship Server API - Java客户端实例
- iOS多线程编程概要总结