这篇文章我们主要介绍下场景管理器的好处,顾名思义,就是方便管理场景嘛,方便调用,这个大家都知道;当然这就没有我们函数介绍环节了,我就直接上代码;
代码时刻
/**************************************
姓名:笨小五
时间: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);
}
}
如果你们还有更好的写法,请告诉小五,让我们一起学习下