笨小五工作笔录之-场景场景管理器

这篇文章我们主要介绍下场景管理器的好处,顾名思义,就是方便管理场景嘛,方便调用,这个大家都知道;当然这就没有我们函数介绍环节了,我就直接上代码;


代码时刻

/**************************************
姓名:笨小五
时间:2013.12.5
作用:场景管理器
***************************************/
#ifndef SCENE_MANAGER_H_
#define SCENE_MANAGER_H_
#include "cocos2d.h"
USING_NS_CC;
class SceneManager : public CCObject
{
public:
    /* 场景枚举类 */
    enum EnumSceneType {
        en_GameUIScene, /* 游戏主菜单 */
en_WinScene, /* 胜利场景 */
en_GameOverScene,/* 游戏结束场景 */
en_GameLandScene, /*游戏标志*/
en_GameBattleScene /*战斗场景*/
    };
    /* 获取场景管理器对象 */
    static SceneManager* sharedSceneManager();
    /* 初始化 */
    virtual bool init();
    /* 切换场景 */
    void changeScene(EnumSceneType enScenType);
private:
    /* 场景管理器对象 */
    static SceneManager* mSceneManager;
};
#endif //SCENE_MANAGER_H_


#include "CCscene\SceneManager.h"
#include "CCscene\LandScene.h"
#include "CCscene\UIScene.h"
#include "CCscene\work.h"
#include "Change.h"
SceneManager* SceneManager::mSceneManager = NULL;
SceneManager* SceneManager::sharedSceneManager() 
{
    if(mSceneManager == NULL)
{
        mSceneManager = new SceneManager();
        if(mSceneManager && mSceneManager->init())
{
            mSceneManager->autorelease();
        }
        else 
{
            CC_SAFE_DELETE(mSceneManager);
            mSceneManager = NULL;
        }
    }
   return mSceneManager;
}
bool SceneManager::init() 
{
    return true;
}
void SceneManager::changeScene( EnumSceneType enScenType ) 
{
    CCScene* pScene = NULL;
switch (enScenType)
{
case en_GameUIScene:
pScene = UIScene::scene();
break;
case en_WinScene: /* 胜利场景 */
pScene = Change::scene();
break;
case en_GameOverScene: /* 游戏结束场景 */

break;
case en_GameLandScene: /*游戏标志场景*/
pScene = LandScene::scene();
break;
case en_GameBattleScene: /*游戏战斗场景*/
pScene= Work::scene();
break;
    }
    if(pScene == NULL) 
{
        return;
    }
    CCDirector* pDirector = CCDirector::sharedDirector();
    CCScene* curScene = pDirector->getRunningScene();
    if(curScene == NULL)
{
        pDirector->runWithScene(pScene);
    }
    else 
{
        pDirector->replaceScene(pScene);
    }
}

如果你们还有更好的写法,请告诉小五,让我们一起学习下


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值