Cocos2d-x 动作管理类CCActionmanager

CCActionmanager这个类其实并不属于行为类,它的父类是 NSObject,而不是CCAction,但它又与CCAction密不可分,因此在这里单独介绍下。
CCActionmanager是个标准的单例类,它的作用顾名思义,就是管理行为类的对象。
工作原理是:当节点执行runAction时,会把action通过addAction方法将对象传递给CCActionmanager的单例,该实例再把这个action添加到自己的行为序列中。
CCActionmanager通过schedule定时刷新自己的update方法,在这个方法中去调用行为序列中每个actionstep(会有一些筛选条件,比如暂停的行为不会update),这些step方法再根据自身的完成进度去update或是结束行为。
实际上是由CCActionmanager驱动的每个action去更新自己的逻辑,而runAction方法只是将行为对象添加进CCActionmanager的更新队列罢了。当节点被清除或是行为结束时,CCActionmanager会自动将action从队列中剔除,无需开发者操心。

使用情景

一般情况下,不需要使用这个单例类管理动作,可以使用CCNode类的stopActionstopActionByTagstopAllAction等函数来管理,
但是有两种情况需要使用CCActionManager类单例:

  • 动作的执行者不是同一个节点。
  • 需要暂停、重启活动时。

成员函数

addAction:为指定目标添加动作。
removeAllAction:删除所有动作。
removeAllAction是FromTarget:为指定目标删除所有动作。
removeAction:删除传入的动作。
removeActionByTag:根据标签删除动作。
getActionByTag:根据标签获得动作。
numberOfRunningActionsInTarget:获得目标的动作数。
pauseTarget:暂停目标动作。
resumeTarget:重启目标动作。
pauseAllRunningActions:暂停所有动作,返回被暂停动作目标的集合。
resumeTargets:重启所有动作,需传入被暂停动作目标的集合。

示例:
self.action_manager = cc.Director:getInstance():getActionManager()
self.action_manager:pauseTarget(self);
self.action_manager:resumeTarget(self);
self.action_manager:removeAllActionsFromTarget(self)

你可能感兴趣的:(Cocos2d-x 动作管理类CCActionmanager)