动作在游戏中有举足轻重的作用,它让游戏中的元素活了起来,比如单击一个按钮使用一个特效让玩家明显的感觉到点了这个按钮;角色的移动,攻击等等都离不开动作。因此Cocos2DX也为我们提供了丰富强大的动作系统。
CCNode与动作基类
CCNode中定义了动作有关的函数,也就是说根源种子类以及子类都能够执行动作。
//执行一个动作,并返回该动作 CCAction* runAction(CCAction* action); //移除所有动作 void stopAllActions(void); //根据动作参数移除指定的动作 void stopAction(CCAction* action); //根据标签移除动作 void stopActionByTag(int tag); //根据标签获取动作 CCAction* getActionByTag(int tag); //获取当前对象执行动作的总数 unsigned int numberOfRunningActions(void);
上面函数都有详细的注释就不再解释了,下面看看动作基类CCAction。
CCAction和CCNode一样都直接集成了CCObject,可见Cocos2DX将动作作为一个单独的系统来处理。从上图也可以看出动作主要根据时间来划分,当然还有两个比较特殊的动作类:跟随动作CCFollow和速度动作CCSpeed。按照时间属性来划分引擎将动作分为了即时动作CCActionInstant和持续动作CCActionInterval两大类。前面也学习到不少元素现在我们来看看动作系统的位置(书上的图能说明问题借用了):
即时动作CCActionInstant:动作执行马上就能见到效果的动作
- CCFlipX 与 CCFlipY 将精灵对象水平垂直翻转;
- CCPlace :将精灵对象放置在指定的位置(注意该动作不会影响其他属性如精灵对象的显示状态);
- CCHide与CCShow:控制精灵对象的显示还是隐藏的动作;
- CCToggleVisibility:精灵对象显示与隐藏的开关动作,也就是原来的隐藏的执行该动作后就为显示,反之亦然;
- CCReuseGrid与CCStopGrid:网格动作;
- CCCallFunc:函数回调动作,这个和C#中的委托使用有点像是,它又有三个子类:CCCallFuncND、CCCallFuncN、CCCallFuncO,三者的不同就是参数不同,使用中再详细了解。
持续动作CCActionInterval:动作执行将持续一段时间的动作
持续动作按照影响精灵对象属性的不懂也分不同的种类:
位置相关的动作(XX表示To或By-- To表示移动的具体结果;By表示动作执行程度或速率)
- CCMoveXX : 移动对象移动到指定的位置
- CCJumpXX:跳跃到到指定位置
- CCBezierXX:按照贝塞尔曲线移动到指定位置
缩放动作:CCScaleXX
旋转动作:CCRotateXX
倾斜动作:CCSkewXX
颜色相关动作(XX表示In、Out或To -- )
- CCFadeXX:淡入淡出动作,该动作修改CCNode对象的透明度
- CCTintXX : 变化到指定的颜色
- CCBlink :闪烁效果,通过修改可见属性实现
组合动作:有基本动作类组合而成
- 序列动作CCSequence:按照顺序执行其中的基本动作
- 同步动作CCSpawn:同时执行多个动作
- 重复动作CCRepeat 和CCRepeatForever
动画动作:
可变速度动作CCEaseAction:改变动作执行的速度
引擎的动作大部分都罗列出来,今天就先熟悉一下,在后面的学习中再慢慢理解各个动作的使用。