4.3.1 位置变化动作
针对位置(position)这一属性,引擎为我们提供了3种位置变化动作类型,下面将简要介绍这几种动作。
CCMoveTo和CCMoveBy:用于使节点做直线运动。设置了动作时间和终点位置后,节点就会在规定时间内,从当前位置直线移动到设置的终点位置。它们的初始化方法分别为:
- CCMoveTo::create(ccTime duration, CCPoint& pos);
- CCMoveBy::create(ccTime duration, CCPoint& pos);
其中,duration参数表示动作持续的时间,pos参数表示移动的终点或距离。对于CCMoveTo,节点会被移动到pos对应的位置;对于CCMoveBy,节点会相对之前的位置移动pos的距离。
CCJumpTo和CCJumpBy:使节点以一定的轨迹跳跃到指定位置。它们的初始化方法如下:
- CCJumpTo::create(ccTime duration, CCPoint pos, float height, int jumps);
- CCJumpBy::create(ccTime duration, CCPoint pos, float height, int jumps);
其中pos表示跳跃的终点或距离,height表示最大高度,jumps表示跳跃次数。
CCBezierTo和CCBezierBy:使节点进行曲线运动,运动的轨迹由贝塞尔曲线描述。贝塞尔曲线是描述任意曲线的有力工具,在许多软件(如Adobe Photoshop)中,钢笔工具就是贝塞尔曲线的应用。实际上,在《捕鱼达人》游戏中,为了控制鱼的游动,我们就用到了贝塞尔曲线。
每一条贝塞尔曲线都包含一个起点和一个终点。在一条曲线中,起点和终点都各自包含一个控制点,而控制点到端点的连线称作控制线。控制线决定了从端点发出的曲线的形状,包含角度和长度两个参数:角度决定了它所控制的曲线的方向,即这段曲线在这一控制点的切线方向;长度控制曲线的曲率。控制线越长,它所控制的曲线离控制线越近。示例图如图4-1所示。
任意一段曲线都可以由一段或几段相连的贝塞尔曲线组成,因此我们只需考虑一段贝塞尔曲线应该如何描述即可。一段独立的贝塞尔曲线如图4-2所示。
使用时我们要先创建ccBezierConfig结构体,设置好终点endPosition以及两个控制点controlPoint_1和controlPoint_2后,再把结构体传入CCBezierTo或CCBezierBy的初始化方法中:
- ccBezierConfig bezier;
- bezier.controlPoint_1 = ccp(20, 150);
- bezier.controlPoint_2 = ccp(200, 30);
- bezier.endPosition = ccp(160, 30);
- CFiniteTimeAction * beizerAction = CCBezierTo::create(actualDuration / 4, bezier);
- http://book.51cto.com/art/201305/394771.htm