cocos 3.2游戏暂停功能

1,GamePauseUtils.h

//
//  GamePauseUtils.h
//  AdventureKing
//
//  Created by jianan on 15/5/12.
//
//

#ifndef __AdventureKing__GamePauseUtils__
#define __AdventureKing__GamePauseUtils__

#include "cocos2d.h"
USING_NS_CC;

//操作类型
typedef enum OPERATE_TYPE{
    OPERATE_TYPE_PAUSE,
    OPERATE_TYPE_RESUME
}OPERATE_TYPE;


//
class GamePauseUtils
{
public:
    GamePauseUtils();
    ~GamePauseUtils();
    static GamePauseUtils* getInstance();
    void operateAllSchedulerAndActions(Node* node, OPERATE_TYPE type, int ignoreTag); //忽略检测的tag
};


#endif /* defined(__AdventureKing__GamePauseUtils__) */

2,GamePauseUtils.cpp

//
//  GamePauseUtils.cpp
//  AdventureKing
//
//  Created by jianan on 15/5/12.
//
//

#include "GamePauseUtils.h"

static GamePauseUtils* instance = NULL;

GamePauseUtils::GamePauseUtils(){
    
}

GamePauseUtils::~GamePauseUtils(){
    
}

GamePauseUtils* GamePauseUtils::getInstance(){
    if(instance == NULL){
        instance = new GamePauseUtils();
    }
    return instance;
}

void GamePauseUtils::operateAllSchedulerAndActions(Node* node, OPERATE_TYPE type, int ignoreTag){
    if(node->isRunning()){
        switch(type){
            case OPERATE_TYPE_PAUSE:
                node->pause();
                break;
            case OPERATE_TYPE_RESUME:
                node->resume();
                break;
        }
        
        
        Vector<Node*> array = node->getChildren();
        
        if(array.size() > 0){
            for(Vector<Node*>::iterator iter = array.begin(); iter != array.end();){
                Node* child = *iter;
                
                if(child->getTag() == ignoreTag){
                    iter++;
                }else{
                    iter++;
                    this->operateAllSchedulerAndActions(child, type, ignoreTag);
                }
            }
        }
    }
}
3,暂停
GamePauseUtils::getInstance()->operateAllSchedulerAndActions(rootLayer, OPERATE_TYPE_PAUSE, IGNORE_TAG);
4,恢复
 GamePauseUtils::getInstance()->operateAllSchedulerAndActions(rootLayer, OPERATE_TYPE_RESUME, IGNORE_TAG);

你可能感兴趣的:(cocos 3.2游戏暂停功能)