我有一个名为 GameManager 的单例类。
游戏管理器.h
#include "cocos2d.h"
using namespace cocos2d;
class GameManager : private CCObject
{
public:
GameManager(void);
virtual ~GameManager(void);
virtual bool init(void);
static GameManager* sharedGameManager(void);
CC_SYNTHESIZE(CCString*, email, Email);
CC_SYNTHESIZE(CCString*, nickName, NickName);
CC_SYNTHESIZE(int, currentGame, CurrentGame);
CCArray* gamesArray;
};
游戏管理器.cpp
#include "GameManager.h"
static GameManager* _sharedGameManager = NULL;
GameManager* GameManager::sharedGameManager(void)
{
if (!_sharedGameManager)
{
_sharedGameManager = new GameManager;
_sharedGameManager->init();
}
return _sharedGameManager;
}
GameManager::GameManager(void)
{
}
GameManager::~GameManager(void)
{
email->release();
nickName->release();
gamesArray->release();
}
bool GameManager::init()
{
CCLOG("GameManager Created");
email = CCString::create("");
email->retain();
nickName = CCString::create("");
nickName->retain();
currentGame = 0;
gamesArray = CCArray::create();
gamesArray->retain();
return true;
}
我在我的登录页面中创建了 GameManager
GameManager::sharedGameManager();
我的应用程序的流程是:
Login.cpp -> GameList.cpp -> GameScreen.cpp
在登录页面中,我存储了帐户电子邮件和昵称以及在该页面中创建的 gamesArray:
//store user info to gamemanager
GameManager::sharedGameManager()->setEmail((CCString*) parseOne->objectAtIndex(3));
GameManager::sharedGameManager()->setNickName((CCString*) parseOne->objectAtIndex(7));
GameManager::sharedGameManager()->gamesArray = gameObjectArray;
一旦用户登录,就会使用 GameManager 信息创建 GameList。
所以来自单身人士的信息此时存在。
GameList 页面为 gamesArray 中的每个游戏创建一个 GameObject。每个 GameObject 都有一个附加的子按钮,用于转到 GameScreen 并将该 GameObjects id 保存到 GameManager
GameManager::sharedGameManager()->setCurrentGame(gameNumber);
CCDirector * pDirector = CCDirector::sharedDirector();
CCScene* pScene = GameScreenScene::scene();
pDirector->replaceScene(pScene);
现在奇怪的部分,当我到达 GameScreenScene 时,来自 GameManager 的数据已经消失,除了 currentGame 仍然显示正确的值。
我已经输入了一些日志来诊断问题,但我似乎无法弄清楚。
我可以在 GameListScene 更改为 GameScreenScene 之前读取这些值,但是一旦更改,这些值就消失了。
我也尝试在 GameObject 按钮调用中读取数据,但数据也不存在那里。
如果它可以帮助解决这个问题,我可以添加更多代码,如果它很简单,我只是不想淹没它。
任何帮助都是极好的。