CCAction并不是一个在屏幕显示的对象,动作必须依托于CCNode类以及它的子类。动作包括:位置移动、跳跃、甚至对颜色的渐变。
继承关系:
CCAction三个子类:有限时间动作、跟随、移动速度。
缓冲动作:
Ease系列可以改变运动的速度,却不会改变总体时间,可分为三类:
In actions:action(开始的时候加速);
Out actions:action(结束的时候加速);
InOut actions:action(开始和结束的时候加速);
组合动作:
CCSequence--定义一个动作序列,可以使用动作的CCArray数组;也可以把所有动作作为参数传入create函数中,最后结尾参数使用null即可;还可以把两个有限时间动作按顺序传入create函数中。
CCSpawn--使被合成的动作同时进行。
CCRepeat、CCRepeatForever--二者都可以使动作重复进行,区别:CCRepeat可以在第二个参数定义重复次数,CCRepeatForever则是一直重复。
跟随动作:
CCFollow--是一个节点跟随另一个节点的动作
可调整速度动作:
CCSpeed--理解为对目前动作的包装,包装之后就可以实现“慢动作”和“快进”的效果。
动作延迟:
CCDelayTime--动作延后一段固定的时间,可以理解为“空动作”,只有时间,没有任何动作。一般要放在CCSequence才有效果。
改变动作执行对象:
CCTargetedAction--可以自定义执行动作的对象,一般默认执行动作的对象是调用runAction的对象。
函数回调动作:
动作完成后需要执行一些数据上的处理,比如加减血。。。(CCCallFunc、CCCallFuncN、CCCallFuncND)
过程动作:
进入游戏时候需要载入动作,需要一些动作用来实现载入时的动画。
CCProgressTo和CCProgressFromTo都可以实现,只是执行动作的节点是CCProgressTimer。
动作管理类:
CCActionManager--是一个管理所有动作的单例,当CCNode执行runAction时,该函数会把动作通过动作管理类的addAction函数将对象传递给CCActionManager,然后CCActionManager再把此动作添加到动作序列中。动作管理单例定时刷新自己的update方法,通过此方法去调用序列中每个动作的step(暂停的行为不会被update),然后每个step方法再根据自身的完成进度去update或者结束行为。
一般不会需要使用此类,除以下两种情况:1)动作的执行者不是同一个节点。2)需要暂停/重启活动时。
网格动作:
网格没有什么直接应用的场合。运行网格动作的节点好像被分成大小相同的很多矩形,通过矩形的动作形成整体动作。
使用网格之前需要取消OpenGL的深度检测:CCDirector::sharedDirector()->setDepthTest(false)。
网格动作结束之后需要把网格清空。