浅谈ios游戏开发之CCAction

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浅谈ios游戏开发之CCAction
摘要:在ios游戏开发中,目前最为流行的是游戏开发引擎cocos2d-x,它是一种开源、跨平台的免费2D游戏开发引擎。

在cocos2d-x引擎中动作定义了各个节点或精灵之间的移动效果,比如动态效果、跳跃效果、旋转效果等,每一个效果都是一个CCAction动作。

CCAction动作主要分为瞬时动作CCActionInstanse和延时动作CCActionInterval。

关键词:ios游戏;cocos2d-x;CCAction
“动作”在生活中的含义人人皆知,那么在cocos2d-x引擎中,“动作”的含义也十分类似,它是指在CCNode节点上运行某些具有目的的行为,比如移动、缩放、跳跃、染色、贝赛尔曲线等行为。

无论是菜单CCMenu、图层CCLayer、还是标签CCLabel、图片精灵CCSprite,只要是CCNode的子类,都可以实现CCAction,动作是作用在某个CCNode上的变化逻辑,通过动作可以非常方便地实现对节点的位置、大小、缩放、扭曲、显示等属性进行调整,也可以实现对节点操作的各种逻辑处理,通过CCNode上执行runAction方法,就可以实现动作的执行,不仅可以完成一个独立的动作,也可以定义动作序列、组合序列、反向动作等,这让开发者在控制CCNode节点时易如反掌。

一、CCFiniteTimeAction
动作基类CCAction继承的是CCObject类,并且CCFiniteTimeAction(有限次动作执行类)、CCFlow(节点跟随类)、CCSpeed(节点执行速度类)三个大类都继承的是基类CCAction。

CCFiniteTimeAction(有限次动作执行类)又可分为瞬时动作CCActionInstant和延时动作CCActionInterval两个子类。

其中,瞬时动作CCActionInstant表示动作没有执行过程,动作在瞬间完成,这中间不产生任何动画效果。

例如CCStopGrid停止网络、CCToggieVisiblity可见切换、CCHide隐藏、CCShow显示等动作。

延时动作CCActionInterval 表示执行需要一定的时间来完成动作,是需要形成动画过程的。

在实际中,为了制作漂亮的动画动画特效,使用频率最多的就是CCActionInterval延时动作。

常用的延时动作主要有:(1)CCMotoTo/CCMoveBy 移动
两者的区别在于:CCMoveTo是移动到指定坐标,CCMoveBy是相对坐标。

如ccp(300,100),前者表示移动到x=300,y=100处,后者表示向x方向移动300个单位,向y方向移动100个单位。

(2)CCScaleTo和CCScaleBy 缩放
前者表示缩放到xx倍;后者表示缩放xx倍。

(3)CCRotateTO/CCRotateBy 旋转
(4)CCSkewTo/CCSkewBy 扭曲
(5)CCJumpTo/CCJumpBy 跳跃
(6)CCBezierTo/CCBezierBy 贝赛尔曲线
(7)CCFadeIn/CCFadeOut 淡入淡出
(8)CCTintTo/CCTintBy 染色
(9)CCBink 闪烁
二、组合动作类
在cocos2d-x引擎中,除了使用单一的动作外,还提供了一些将多个动作组合在一起的动作类,这些类好比动作对象的容器,通过容器将各个动作按照一定的规则来执行。

(1)序列动作类CCSequence
CCSequence类表示将若干个动作按照某个序列顺序有序执行,多个动作可以利用CCArray数组,也可以作为参数传入create函数中执行。

(2)并列动作类CCSpawn
CCSpawn类表示将若干个动作同时执行,多个动作可以利用CCArray数组,也可以作为参数传入create函数中执行。

(3)重复动作类CCRepeat/CCRepeatForever
CCRepeat类表示重复有次数限制的一个动作,CCRepeatForever表示无限制重复执行某动作。

三、可变速度类
可变速度类指的是精灵在运动过程中速度可变,速度变化不是指改变动作目标的速度,而是指动作自身的执行速度,例如物理知识的自由落体运动或抛物线运动中的速度变化。

这里需要注意三个修饰词:In、Out、InOut,这三个修饰词在除上述列出的3个可变速度类其他可变速度类中同样也会出现,但它们的含义都是由快到慢、由慢到快、由慢到快,再由快到慢。

例如CCEaseIn 、CCEaseOut 、CCEaseInOut CCEaseBounceIn、CCEaseBounceOut 和CCEaseBounceInOut等。

四、速度类CCSpeed
速度类CCSpeed是一个特殊的动作类,并非是一个延时动作,也不是瞬时动作,它的主要作用是可以改变整个动作的执行时间,常用CCSpeed速度类来实现某场景的快进或慢镜头。

例如:
CCMoveTo *moveto=CCMoveTo::create(3.0f,ccp(700,400));
CCSpeed *speed=CCSpeed::create(moveto,2.0f);
上述语句表示moveto动作所耗时间为3秒钟,但执行speed后速度变为原来的两倍进行快速播放,动作完成所消耗的时间仅为1.5秒,若CCSpeed的第二个参数设置为0.5f,则表示将速度减半,整个CCMoveTo动作所消耗时间则为6秒钟。

五、延时动作类CCDelay
延时动作类CCDelay是CCActionIntervel类的子类,是一个延时动作类,表示在多个动作之间添加一个等待的时间段,在该等待的时间段内,CCNode对象不会产生任何动作。

六、跟随动作类CCFollow
跟随动作类CCFollow可以让一个CCNode节点随着另一个CCNode节点作移动,跟随移动的范围可以进行设置,如果离开该范围就可以不再跟随,类似于摄像机的跟拍效果。

相关文档
最新文档