ActionManager 类控制引擎的整个动画系统,由于动画可能每帧都在改变它的状态,所以它应该有一个类似 update 的定时器,这个定时器在游戏运行中的每帧都会执行。在Director类的init函数中,可以看到程序片段3-1所示的代码。
程序片段3-1 ActionManager对象与定时器的定义
动画管理类只有一个实例,可以通过 Director 类的 getActionManager 函数获得它的指针。游戏中定义的所有动画都会加入到这个管理类中,所以该类应该提供一些函数来控制动画的添加、删除等操作,它的一些主要函数如表3-1所示。
表3-1 ActionManager的函数
有了这些函数,就可以控制动画的生命周期,如使用 addAction 函数后,该动画的生命周期开始;使用 removeAction 函数后,该动画的生命周期就结束了。在 Node 类中,使用runAction和stopAction函数实现相应的功能,具体如程序片段3-2所示。
程序片段3-2 动画生命周期控制代码
程序片段 3-2 中的_actionManager 指针就是指向该类的实例,同时也演示了增加和移除动画函数的使用。在实际的使用过程中,很少接触到该类的这些函数,都是通过其他方式间接调用的。