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。

  • 相关阅读:
    11.分类与监督学习,朴素贝叶斯分类算法
    14 深度学习-卷积
    13-垃圾邮件分类2
    12.朴素贝叶斯-垃圾邮件分类
    9、主成分分析
    8、特征选择
    7.逻辑回归实践
    6.逻辑归回
    5.线性回归算法
    15 手写数字识别-小数据集
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7238361.html
Copyright © 2011-2022 走看看