Cocos2d-x教程(16)-自定义动作 圆周运动

 欢迎加入 Cocos2d-x 交流群: 193411763
转载时请注明原文地址:http://blog.csdn.net/u012945598/article/details/17605409

   在之前的文章中我们曾经讲过Cocos2d-x中的各种动作的使用方法,我们先来简单的回顾一下与动作相关的内容
   1.Cocos2d-x中的所有动作类的文件都位于 Cocos2d-x-2.2.1/cocos2dx/actions 目录下
   2.CCAction是所有动作类的基类,所有的动作类都派生自CCAction
   3.CCFiniteTimeAction类中定义了有限时间内可以完成的动作,CCAction的大多数实现类都派生自CCFiniteTimeAction,在CCFiniteTimeAction中为我们提供了 reverse方法,该方法可以获得一个与原动作相反的动作(并不是所有动作都有逆动作)
  4.CCFiniteTimeAction派生出了两个类,分别是CCActionInstant(瞬时动作),持续性动作(CCActionInterval)
  5.CCActionInterval 动作中包含了 CCMoveTo/By   CCJumpTo/By  CCBezierTo/By CCScaleTo/By  CCRotateTo/By等等
 而我们今天所举的例子——圆周运动,便是属于持续性动作的一种,下面我们来对该动作进行一个封装。

首先我们需要知道圆周运动的原理,任何一种图形,都可以看做是由多边形构成的,一个圆,我们可以将它拆分成若干个点,可以是100个,也可以是200个,所谓的圆周运动,就是在每帧刷新的过程中,求出下一帧时节点所处的坐标,而这个坐标,就是我们的200个点中的其中一个。
也就是说,圆周运动实际上就是把一个圆形分成了若干个点坐标,让节点在这些坐标上不停的切换,我们所需要做的,就是求出这些点的坐标。下面我们来看一下坐标是如何求出的:
Cocos2d-x教程(16)-自定义动作 圆周运动_第1张图片
如上图所示,圆上任意一点P的坐标,都能够通过半径r以及夹角a获得。

下面我们来分装一个圆周运动的类:在规定时间内,让一个节点在指定半径内围绕一个圆心运动360度。
创建一个CCCircleBy类,继承于CCActionInterval(持续性动作),.h文件代码如下:
Cocos2d-x教程(16)-自定义动作 圆周运动_第2张图片
.cpp文件代码如下:
Cocos2d-x教程(16)-自定义动作 圆周运动_第3张图片


完成上述操作后,我们就可以使用CCCircleBy的create()方法去创建一个动作了:



运行项目,我们会发现精灵围绕以(480,320)为圆心做匀速圆周运动,半径为50,时间为2秒。

你可能感兴趣的:(cocos2d-x,cocos2d-x,曲线运动,曲线运动,圆周运动,封装动作,马宗扬)