Cocos2d-x教程(16)-自定义动作 圆周运动
2013-12-27 10:06
671 查看
欢迎加入 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个点中的其中一个。
也就是说,圆周运动实际上就是把一个圆形分成了若干个点坐标,让节点在这些坐标上不停的切换,我们所需要做的,就是求出这些点的坐标。下面我们来看一下坐标是如何求出的:
如上图所示,圆上任意一点P的坐标,都能够通过半径r以及夹角a获得。
下面我们来分装一个圆周运动的类:在规定时间内,让一个节点在指定半径内围绕一个圆心运动360度。
创建一个CCCircleBy类,继承于CCActionInterval(持续性动作),.h文件代码如下:
.cpp文件代码如下:
完成上述操作后,我们就可以使用CCCircleBy的create()方法去创建一个动作了:
运行项目,我们会发现精灵围绕以(480,320)为圆心做匀速圆周运动,半径为50,时间为2秒。
转载时请注明原文地址: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个点中的其中一个。
也就是说,圆周运动实际上就是把一个圆形分成了若干个点坐标,让节点在这些坐标上不停的切换,我们所需要做的,就是求出这些点的坐标。下面我们来看一下坐标是如何求出的:
如上图所示,圆上任意一点P的坐标,都能够通过半径r以及夹角a获得。
下面我们来分装一个圆周运动的类:在规定时间内,让一个节点在指定半径内围绕一个圆心运动360度。
创建一个CCCircleBy类,继承于CCActionInterval(持续性动作),.h文件代码如下:
.cpp文件代码如下:
完成上述操作后,我们就可以使用CCCircleBy的create()方法去创建一个动作了:
运行项目,我们会发现精灵围绕以(480,320)为圆心做匀速圆周运动,半径为50,时间为2秒。
相关文章推荐
- Cocos2d-x教程(16)-自定义动作 圆周运动
- 自定义圆周运动动画理解
- 文本转载【Cocos2D-X 】初窥门径(16)几种常用的 CCMenuItem、自定义Button
- android cocos2d动作自定义
- Cocos2d-x 3.0final 终结者系列教程16-《微信飞机大战》实现
- Cocos2d-x -自定义动作 圆周运动
- 微信公众号怎么自定义菜单-微信公众号使用教程16
- Cocos2d-x 3.0final 终结者系列教程16-《微信飞机大战》实现
- cocos2d-x 3.2 物理小游戏教程3 block it 小球的运动 墙壁的隐藏
- Quick-Cocos2d-x初学者游戏教程(四) --------------- 开发初探(添加背景,标题,动作,按钮)
- cocos2d 人物缩小和放大以及人物移动,重复运动,组合动作
- 【Cocos2D-X 游戏引擎】初窥门径(16)几种常用的 CCMenuItem、自定义Button
- Cocos2D教程:使用SpriteBuilder和Cocos2D 3.x开发横版动作游戏——Part 1
- 枫叶天空Cocos2d-x3.0系列教程三 ui教程3 自定义组件和使用CocoStudio UI编辑器
- cocos2d-x常用宏 沈大海cocos2d-x教程16
- cocos2d-x 提升篇 (16) actions动作讲解
- 解读ASP.NET 5 & MVC6系列教程(16):自定义View视图文件查找逻辑
- Cocos2d-x教程(7)-动作
- 【Cocos2d入门教程五】Cocos2d-x动作篇
- Cocos2d-x 3.0final 终结者系列教程16-《微信飞机大战》实现