我的Cocos2d-x学习笔记(十六)动作
一、简介: 继续引用高级开发教程: 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 跟随。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |