zoukankan      html  css  js  c++  java
  • 【独立开发人员er Cocos2d-x实战 007】使用Cocos2dx UserDefault.xml

    这篇博客是因为下述问题产生的 —(代码1):
    std::string str = FileUtils::getInstance()->getWritablePath();
        CCLOG(str.c_str());
    
    UserDefault::getInstance()->setStringForKey("keyqq11", "value11");
    
    FileUtils::getInstance()->setWritablePath("D:/");
    
    str = FileUtils::getInstance()->getWritablePath();
        CCLOG(str.c_str());
    
    UserDefault::getInstance()->setStringForKey("keyqq12", "value22");
    開始我以为UserDefault.xml会在两个地方生成,结果我错了。

    UserDefault.xml仅仅存在在默认路径:C:/Users/G40-70/AppData/Local/CAnimal/。

    注:关于默认路径,我们能够使用上述提到的方法进行打印。

    于是我进入了漫长的寻找答案 – 我的方法是源代码调试。

    注:假设大家用的是CocosStudioproject的话,就须要切换至Cocos2dxproject,因为CocosStudio不提供FileUtils实现。

    我们先看UserDefault::getInstance接口 —(代码2):
    UserDefault* UserDefault::getInstance()
    {
        if (!_userDefault)
        {
            initXMLFilePath();
    
            // only create xml file one time
            // the file exists after the program exit
            if ((!isXMLFileExist()) && (!createXMLFile()))
            {
                return nullptr;
            }
    
            _userDefault = new (std::nothrow) UserDefault();
        }
    
        return _userDefault;
    }
    深入看initXMLFilePath()接口 —(代码3):
    void UserDefault::initXMLFilePath()
    {
        if (! _isFilePathInitialized)
        {
            _filePath += FileUtils::getInstance()->getWritablePath() + XML_FILE_NAME;
            _isFilePathInitialized = true;
        }    
    }
    从上面两段代码能够知道。UserDefault在进行初始化的时候进行路径的设置。并且仅仅有在第一次时才改动_filePath值。于是上述代码1问题迎刃而解:因为在代码1中我们一共调用两次下述代码:
    UserDefault::getInstance()->setStringForKey(......);

    而UserDefault.xml路径仅仅有在第一次调用时才设置。所以在第二次调用时。尽管此时FileUtils._writablePath已经改动,可是并没有使得UserDefault.filePath改动,所以代码1中出现仅仅有在一处生成UserDefault.xml。

  • 相关阅读:
    树形dp(HDU1520)
    POJ3071(概率DP)
    网络流之FF算法(poj1273&&洛谷P3376)
    二分图匹配之匈牙利算法
    江西财经大学第二届程序设计竞赛——E
    浅谈数位dp
    浅谈数位dp——hdu 不要62
    buns~~~一个简单的背包问题
    POJ 1066 Treasure Hunt (线段相交)
    POJ 2653 Pick-up sticks (线段相交)
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7238361.html
Copyright © 2011-2022 走看看