cocos2d-x(动作类)

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)。

网格动作结束之后需要把网格清空。

posted on 2013-06-06 14:17  渡边Q  阅读(1273)  评论(0编辑  收藏  举报