一、简介:
继续引用高级开发教程:
CCAction 作为一个基类,其实质是一个接口(即抽象类),由它派生的实现类(如运动和转动等)才是我们实际使用的动作。CCAction 的绝大多数实现类都派生自CCFiniteTimeAction,这个类定义了在有限时间内可以完成的动作。由CCFiniteTimeAction 派生出的两个主要类分别是瞬时动作(CCActionInstant)和持续性动作(CCActionInterval)。
动作作用于CCNode,任何一个动作都需要由CCNode对象执行。
一个CCAction只能使用一次,对于需要反复使用的动作对象,可以通过copy方法复制使用。
CCFiniteTimeAction定义了reverse方法,通过这个方法可以获得一个与原动作相反的动作。
设置属性为常量的动作不存在逆动作,设置属性为相对值的动作存在逆动作。
二、瞬时动作
瞬时动作指立刻完成的动作,是CCFiniteTimeAction 中持续时间为0的特例。
瞬时动作在下一帧会立刻执行并完成,为了方便与其他动作类组合为复杂动作。
1、CCPlace
该动作作用于将节点放置到某个指定位置,其作用与修改节点的Position属性相同。
实例:
CCPlace* place = CCPlace::create(ccp(100,100)); CCSprite* spr = CCSprite::create("p_2_01.png"); spr->setPosition(ccp(240,160)); spr->runAction(place); addChild(spr);2、CCFlipX和CCFlipY
这两个动作分别用于将精灵沿X和Y轴反向显示,其作用与设置精灵的FlipX和FlipY属性相同。
3、CCShow和CCHide
这两个动作分别用于显示和隐藏节点,其作用与设置节点的Visible属性的作用一样。
4、CCCallFunc
CCCallFunc系列动作包括:CCCallFunc、CCCallFuncN、CCCallFuncND、CCCallFuncO。
CCCallFunc:调用的方法不包含参数,callfunc_selector。
CCCallFuncN:包含一个CCNode* 类型的参数,callfuncN_selector。
CCCallFuncND:包含一个CCNode*类型的参数,和一个void*参数(自定义类型),callfuncND_selector。
CCCallFuncO:包含一个CCObject*类型的参数,callfuncO_selector。
二、持续性动作
持续性动作是在持续一段时间里逐渐完成的动作。
每一种持续性动作通常存在两个不同的变种动作,To后缀的动作描述了节点属性的绝对变化,By后缀的动作描述了属性值的相对变化。
持续性动作根据效果可以分为4类:位置变化动作、属性变化动作、视觉特效动作、控制动作。
(一)位置变化动作(3种)
1、CCMoveTo和CCMoveBy:
用于节点做直线运动。设置了动作时间和终点位置后,节点就会在规定时间内,从当前位置直线移动到设置的终点位置。
2、CCJumpTo和CCJumpBy
使节点以一定的轨迹跳跃到指定位置。
3、CCBezierTo和CCBezierBy
使节点进行曲线运动,运动的轨迹由贝塞尔曲线描述。
(二)属性变化动作
1、CCScaleTo和CCScaleBy:
产生缩放效果。
2、CCRotateTo和CCRotateBy:
产生旋转效果。
3、CCFadeIn和CCFadeOut:
产生淡入淡出效果。
4、CCFadeTo:
一段时间内透明度的变化效果。
5、CCTintTo和CCTintBy:
设置色调变化。
(三)视觉特效动作
1、CCBlink:
使目标节点闪烁。
2、CCAnimation:
播放帧动画。
(四)控制动作
用于对一些动作进行精细控制。
CCDelayTime:将动作延时一定时间。
CCRepeat:把现有动作重复一定次数。
CCRepeatForever:使一个动作不断重复。
三、复合动作
作为容器,把许多动作组合成一个复杂的动作。
1、CCRepeat和CCRepeatForver:
CCRepeat:把现有动作重复一定次数。
CCRepeatForever:使一个动作不断重复。
2、CCSpawn:使一批动作同时执行。
3、CCSequence:
让动作顺序执行。
3、CCDelayTime:
占用一段时间,使动作延时。
四、变速动作
它可以把任何动作按照改变后的速度执行。
1、CCSpeed:
用于线性地改变某个动作的速度。
2、CCActionEase:
自定义速度变化。
3、CCFollow
跟随。