cocos2d-x 动作类(四)

  一、基本概念
行为类的基类是CCAction,任何一种行为都是由它拓展衍变而来的。
行为类可以分为三大类:有限次执行类CCFiniteTimeAction、跟随移动类CCFollow和速度行为类CCSpeed,
而有限次执行类分为瞬间行为类CCActionInstant和持续行为类CCActionInterval。继承关系如下图所示:


有限次执行类是按时间顺序做一系列事情,做完后立即结束行为
跟随移动类可以使节点跟随指定的另一个节点移动
速度行为类作用是调整行为实例的执行速度,依赖于其它行为,单独存在无意义。
二、动作类解析
CCAction类:
virtual bool isDone(void); //测试一个动作是否完成,如完成返回true
virtual void startWithTarget(CCNode *pTarget); //将结点与行为对象关联,也就是设置动作的承受者。须在动作开始之前完成此设置。
virtual void stop(void); //动作完成之后取消节点与行为的关联。不要直接调用这个函数。而应该用target->stopAction(action)。
virtual void step(float dt);//动作的间隔时间
virtual void update(float time);//动作的执行内容,time的取值在0到1之间;
//0 表示动作的开始, 0.5 表示动作的一半, 1 表示运用完毕
inline CCNode* getTarget(void)//获取动作的承受者
inline void setTarget(CCNode *pTarget) //改变动作的承受者
---------------------------------------------------
CCFiniteTimeAction类:
inline float get/setDuration(void)//获取/设置动作的持续时间
virtual CCFiniteTimeAction* reverse(void); //反向执行一个行为。
CCSpeed类:
get/setSpeed()//获取或设置动作的执行速度
bool initWithAction(CCActionInterval *pAction, float fSpeed);//将速度与动作进行关联
void setInnerAction(CCActionInterval *pAction)//更改速度与动作的关联
CCActionInterval* getInnerAction()//获取当前与速度相关联的动作。
CCFollow类:
bool isBoundarySet(void)//测试边界功能是否打开,如果设置的边界则结点会在边界类运动。
void setBoudarySet(bool bValue)//打开或关闭边界功能
CCFollow* actionWithTarget(CCNode *pFollowedNode, const CCRect& rect = CCRectZero);//使节点跟随另一个节点移动,参数rect表示跟随者只能在该区域内移动,如超出该范围,则停止跟随。默认没有边界
-------------------------------------------
CCActionInstant类:瞬时动作是立即行动,没有持续时间。其子类如下:
CCCallFunc自定义行为类,效果为调用一个自定义的方法,通过方法的实现来达到自己想要的效果。
CCCallFuncN 效果与CCCallFunc基本相同,只是会将节点对象作为参数传递给被调用的函数。
CCCallFuncND 效果与CCCallFuncN基本相同,只是可以额外传递一个参数给被调用的函数。
CCCallFuncO
*需要特别注意的是,CallFunc虽然是瞬时行为,但这个“瞬时”只体现在它调用函数是在一瞬间完成的,但这个函数的执行可能需要一段时间,就是说CallFunc的行为已经做完了,开始执行序列后面的行为,但被调用的函数还没有完成,此时它们是并行的。
CCFilpX横向翻转类
CCFilpY纵向翻转类
CCHide隐藏结点类
CCShow显示结点类
CCPlace放置结点类
CCReuseGrid类
CCStopGrid类 
CCToggleVisibility切换节点可见性类,即当节点可见时设为不可见,不可见时设为可见。
CCBSetSpriteFrame类
CCActionInterval持续行为类:被包含在一段时间内。子类如下:
CCAccelAmplitube
CCAccelDeccelAmplitude
CCActionCamera
CCActionEase变速类行为
CCEaseIn  由快至慢
CCEaseOut  由慢至快
CCEaseInOut  由快至慢再由慢至快
CCEaseSineIn  由快至慢
CCEaseSineOut  由慢至快
CCEaseSineInOut  由快至慢再由慢至快
CCEaseExponentianIn  由极快至慢
CCEaseExponentianOut  由慢至极快
CCEaseExponentianInOut  由极快至慢再由慢至极快
CCActionTween
CCAnimate动画,这个行为有点特殊,它并非继承自CCAction以及CCAction的任何子类,相对来说是个独立的行为。CCAnimation的作用是根据一个帧序列连续切换,形成一个动画,可以说是专门为精灵类准备的。
CCBezierBy  使节点按贝塞尔曲线运动。
CCBlink  使节点闪烁,可以设置闪烁次数。
CCCardinalSplineTo
CCDeccelAmplitude
CCDelayTime 延迟,即增加一个间歇时间。
CCFadeIn 淡入
CCFadeOut 淡出
CCFadeTo 逐渐改变透明度
CCGridAction
CCJumpBy
CCJumpTo 使节点跳跃到指定的位置,可以设置高度和次数。
CCMoveBy  使节点根据参数发生相对位移
CCMoveTo  将节点移动到指定坐标。
CCProgressFromTo
CCProgressTo
CCRepeat重复执行行为(继承自CCActionInterval),就是将一个已知的行为或行为序列多次执行,执行的次数通过参数设定,效果类似于CCRepeatForever,但CCRepeat只执行有限次,有运行结束的那一刻。
CCRepeatOver
CCReverseTime
CCRotateBy  旋转节点
CCRotateTo 设置节点的旋转角度。
CCScaleTo 设置节点的缩放倍率。
CCSequence 行为序列(继承自CCActionInterval),即将若干个待执行的行为按顺序组合在一起,然后依次执行,如果中间有持续行为的话则等到前一个行为执行完毕后再执行下一个(CCCallFunc是并行),因此单独的CCSequence对象是没有意义的。
CCSkewTo
CCSpawn 并行行为(继承自CCActionInterval),即将若干个待执行的行为组合在一起,同时执行它们,行为的执行时间以最长的那个行为为准,就是说当全部的子行为结束时,CCSpawn才算结束。单独的CCSpawn对象也没有意义。
CCTargetedAction
CCTintBy  使节点色调发生偏移。
CCTintTo 设置节点色调。
CCBRotateTO
三、动作管理类CCActionManager
CCActionmanager 这个类其实并不属于行为类,它的父类是CCObject,而不是CCAction,但它又与CCAction密不可分,因此在这里单独介绍下。
CCActionmanager是个标准的单例类,它的作用顾名思义,就是管理行为类的对象,工作原理是:当节点执行runAction时,会把action通过addAction方法将对象传递给CCActionmanager的单例,该实例再把这个action添加到自己的行为序列中。CCActionmanager通过schedule定时刷新自己的update方法,在这个方法中去调用行为序列中每个action的step(会有一些筛选条件,比如暂停的行为不会update),这些step方法再根据自身的完成进度去update或是结束行为。就是说实际上是由CCActionmanager驱动的每个action去更新自己的逻辑,而runAction方法只是将行为对象添加进CCActionmanager的更新队列罢了。当节点被清除或是行为结束时,CCActionmanager会自动将action从队列中剔除,无需开发者操心。

    四、应用

1、移动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值