首页 > 代码库 > 07--动作系统(一)

07--动作系统(一)

动作在游戏中有举足轻重的作用,它让游戏中的元素活了起来,比如单击一个按钮使用一个特效让玩家明显的感觉到点了这个按钮;角色的移动,攻击等等都离不开动作。因此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。

         image

        CCAction和CCNode一样都直接集成了CCObject,可见Cocos2DX将动作作为一个单独的系统来处理。从上图也可以看出动作主要根据时间来划分,当然还有两个比较特殊的动作类:跟随动作CCFollow和速度动作CCSpeed。按照时间属性来划分引擎将动作分为了即时动作CCActionInstant和持续动作CCActionInterval两大类。前面也学习到不少元素现在我们来看看动作系统的位置(书上的图能说明问题借用了01BEC22E):

image

      即时动作:动作执行马上就能见到效果的动作

  • CCFlipX 与 CCFlipY 将精灵对象水平垂直翻转;
  • CCPlace :将精灵对象放置在指定的位置(注意该动作不会影响其他属性如精灵对象的显示状态);
  • CCHide与CCShow:控制精灵对象的显示还是隐藏的动作;
  • CCToggleVisibility:精灵对象显示与隐藏的开关动作,也就是原来的隐藏的执行该动作后就为显示,反之亦然;
  • CCReuseGrid与CCStopGrid:网格动作;
  • CCCallFunc:函数回调动作,这个和C#中的委托使用有点像是,它又有三个子类:CCCallFuncND、CCCallFuncN、CCCallFuncO,三者的不同就是参数不同,使用中再详细了解。