美文网首页
Cocos2d-x 动作管理类CCActionmanager

Cocos2d-x 动作管理类CCActionmanager

作者: 白小白152 | 来源:发表于2020-11-10 10:56 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/kkndbktx.html