【独立开发者er Cocos2d-x实战 007】使用Cocos2dx UserDefault.xml
2015-07-13 19:27
330 查看
这篇博客是由于下述问题产生的 —(代码1):
开始我以为UserDefault.xml会在两个地方生成,结果我错了。UserDefault.xml只存在在默认路径:C:/Users/G40-70/AppData/Local/CAnimal/。注:关于默认路径,我们可以使用上述提到的方法进行打印。
于是我进入了漫长的寻找答案 – 我的方法是源码调试。注:如果大家用的是CocosStudio工程的话,就需要切换至Cocos2dx工程,因为CocosStudio不提供FileUtils实现。
我们先看UserDefault::getInstance接口 —(代码2):
深入看initXMLFilePath()接口 —(代码3):
从上面两段代码可以知道,UserDefault在进行初始化的时候进行路径的设置,而且只有在第一次时才修改_filePath值。于是上述代码1问题迎刃而解:由于在代码1中我们一共调用两次下述代码:
而UserDefault.xml路径只有在第一次调用时才设置,所以在第二次调用时,虽然此时FileUtils._writablePath已经修改,但是并没有使得UserDefault.filePath修改,所以代码1中出现只有在一处生成UserDefault.xml。
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/。注:关于默认路径,我们可以使用上述提到的方法进行打印。
于是我进入了漫长的寻找答案 – 我的方法是源码调试。注:如果大家用的是CocosStudio工程的话,就需要切换至Cocos2dx工程,因为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。
相关文章推荐
- 【cocos2d-x 3.X自学笔记】[转]Eclipse配置安卓开发环境(解决SDK manager下载慢问题)
- 5、cocos2d-Lua的demo--虫子和虫子精灵
- 4、cocos2d-Lua的demo--游戏逻辑GameView
- 3、cocos2d-Lua的运行流程与场景
- 2、cocos2d-Lua创建示例demo
- 1、cocos2d-x Lua安装配置
- 【quick-cocos2d-x 游戏开发之一】开发工具sublime text及其强力插件QuickXDev
- cocos2dx之物理引擎
- Cocos3.0 的android返回键功能实现
- cocos2dx AssetsManager的一个BUG
- 如何优化cocos2d/x程序的内存使用和程序大小
- 使用Quick-Cocos2d-x开发植物大战僵尸03-游戏加载页面
- Cocos2dx------2048游戏
- Cocos2d-x的骨骼动画Spine和Armature
- cocos2d-x中使用tinyxml遇到的问题及解决
- cocos2dx的中文乱码
- cocos2d-x v3.2环境配置(现在3.x版本号可以配置该)
- cocos2d 工具使用方法介绍(包含字体,图片,粒子等工具)
- cocos2d 绝对路径操作方式
- [转]Mac下cocos2dx-3.2+Xcode环境配置和项目创建