一次在cocos2d-x中初始化变量

时间:2013-11-19 07:56:46

标签: c++ ios6 initialization cocos2d-x

我正在使用cocos2d-x(iOS)开发一款游戏。在那里,我创建了几个场景,并在这些场景之间进行了转换。在每次转换期间,调用每个场景(层)的init()(每次在init()之前调用构造函数)。我的问题是,我怎样才能在init()或构造函数中只进行一次变量初始化,即使每次都调用init()?或任何其他替代解决方案?

  CCUserDefault::sharedUserDefault()->setBoolForKey("firstTimeInit", false);

    bool firstTimeInit = CCUserDefault::sharedUserDefault()->getBoolForKey("firstTimeInit");

    if (!firstTimeInit)
    {

     for(int i = 0; i < 10; i++)
     {
       char szName[22] = {0};
       sprintf(szName, "Rank%i", i);

       CCUserDefault::sharedUserDefault()->setIntegerForKey(szName,0);
       CCUserDefault::sharedUserDefault()->flush();

       int score = CCUserDefault::sharedUserDefault()->getIntegerForKey(szName);
       vScore.push_back(score);
     }
 CCUserDefault::sharedUserDefault()->setBoolForKey("firstTimeInit",true); }

我在init()方法中编写了这段代码..我想要的是firstF货币,我做了假,只刷了一次。

编辑#####

在每个转换的cocos2d-x中调用init()方法,这就是每次初始化时的原因。即使在我退出游戏并重新运行之后,我也希望这次初始化。我通过使用CCUserDefault的setBoolForKey()来尝试它,但是徒劳无功,因为它也在init()中。

2 个答案:

答案 0 :(得分:0)

这将完成你的目标

bool val = cocos2d::CCUserDefault::sharedUserDefault()->getBoolForKey("initialized");

if (val != true){
    cocos2d::CCUserDefault::sharedUserDefault()->setBoolForKey("initialized", true);
    cocos2d::CCLog(" initializing value ");
}

答案 1 :(得分:0)

目前发生了什么: -

1&gt;游戏开始你把firstTimeInit = false,这使if条件为真;

2&gt;然后你在最后指定firstTimeInit = true。

3&GT;你退出并再次开始游戏并运行第1步,它会将firstTimeInit中的当前值从true覆盖为false,再次使if条件为true,因此你需要删除第一个语句

CCUserDefault::sharedUserDefault()->setBoolForKey("firstTimeInit", false);

这样一旦键设置为true,它就永远不会设置为false;

假设:但我假设如果没有布尔键,那么它的值总是返回false。多次检查,并返回假。