cocos2dxcocos2d userdefaultt 数据会不会删除

主题 : 求助 如何删除UserDefault.xml的内容
级别: 新手上路
可可豆: 157 CB
威望: 147 点
在线时间: 217(时)
发自: Web Page
来源于&&分类
求助 如何删除UserDefault.xml的内容&&&
CCUserDefault只提供了get和set 还有保存的方法那么我要清空某个或者清空UserDefault.xml的内容的话要怎么操作呢
级别: 新手上路
可可豆: 3 CB
威望: 3 点
在线时间: 24(时)
发自: Web Page
同求啊,想删除UserDefault.xml,很多函数在win32上都可以,可是到了android就不行了,苦恼
级别: 圣骑士
UID: 298324
可可豆: 800 CB
威望: 798 点
在线时间: 282(时)
发自: Web Page
回 1楼(xiaoyan1212) 的帖子
FileUtil类不是有个removeFile吗,用这个试试。
欢迎访问cocos2d-x博客皂荚花。
级别: 新手上路
可可豆: 3 CB
威望: 3 点
在线时间: 24(时)
发自: Web Page
回 2楼(小塔) 的帖子
我用的2.2.3版本,FileUtil类里只有removeSearchPath,用不了
级别: 新手上路
可可豆: 3 CB
威望: 3 点
在线时间: 47(时)
发自: Web Page
同求,为什么只提供创建,却不提供删除的方法呢?
关注本帖(如果有新回复会站内信通知您)
9*6-8 正确答案:46
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版主题 : 关于Cocos2dx3.6中使用UserDefault的问题
级别: 新手上路
可可豆: 139 CB
威望: 139 点
在线时间: 47(时)
发自: Web Page
来源于&&分类
关于Cocos2dx3.6中使用UserDefault的问题&&&
我在AppDelegate.cpp的applicationDidFinishLaunching方法中, 用UserDefault写了一个简单数据的存储
if (!UserDefault::getInstance()-&getBoolForKey(&init&))
UserDefault::getInstance()-&setBoolForKey(&init&, true);
可是运行到这里, 就报错...
还请帮忙说一下, 我这是什么问题啊?
级别: 新手上路
可可豆: 139 CB
威望: 139 点
在线时间: 47(时)
发自: Web Page
谁知道这么是为什么啊?
级别: 侠客
UID: 375482
可可豆: 531 CB
威望: 341 点
在线时间: 800(时)
发自: Web Page
get时候没有设置默认值
我不仅精通CSS、PHP、C、C++、C#、Java、Ruby、python、Objective-C、Pascal、spss、sas等单词的拼写,熟悉Windows、Linux、Mac、Android、IOS、WP8等系统的开关机,还擅长ISO Android Symbian Windows Phone 等手机贴膜.凭什么说我不是程序员!!!
级别: 骑士
可可豆: 482 CB
威望: 450 点
在线时间: 146(时)
发自: Web Page
我是这样保存的:UserDefault::sharedUserDefault()-&setIntegerForKey(&age&, 100);UserDefault::sharedUserDefault()-&flush();      // 记得要flush,不然写入到文件我之前也试过UserDefault::getInstance(),但貌似保存不了。[ 此帖被jeason-06-29 19:35重新编辑 ]
个人博客/jeason1997
级别: 新手上路
可可豆: 139 CB
威望: 139 点
在线时间: 47(时)
发自: Web Page
回 2楼(nuper) 的帖子
get的时候设置了默认值也不行
级别: 侠客
UID: 375482
可可豆: 531 CB
威望: 341 点
在线时间: 800(时)
发自: Web Page
回 4楼(vostro1400) 的帖子
试试楼上的呢,我一般也是sharedUserDefault
我不仅精通CSS、PHP、C、C++、C#、Java、Ruby、python、Objective-C、Pascal、spss、sas等单词的拼写,熟悉Windows、Linux、Mac、Android、IOS、WP8等系统的开关机,还擅长ISO Android Symbian Windows Phone 等手机贴膜.凭什么说我不是程序员!!!
级别: 新手上路
可可豆: 26 CB
威望: 26 点
在线时间: 12(时)
发自: Web Page
回 楼主(vostro1400) 的帖子
你知道原因了吗,求告诉,一直卡在这里不行,快崩溃了都
级别: 新手上路
可可豆: 1 CB
威望: 1 点
在线时间: 3(时)
发自: Web Page
我也遇到这个问题了,这个是引擎3.6版本的问题,这版引擎在WIN32平台下把UserDefault.xml放在C盘用户的文件夹下了(以前WIN32一直是放在可执行程序的当前路径),而你的用户名很可能是中文的,所以这个路径包含中文名。其实出问题是在这里:FileUtils::getInstance()-&isFileExist(***),UserDefault类初始化时调用了这个找文件的函数,但是isFileExist这个函数内部在处理宽字符转换时貌似出错了。修改方法:1.把FileUtilsWin32::getWritablePath()里的实现修改成获取可执行程序的当前路径2.修改FileUtilsWin32::isFileExistInternal让它把中文路径转对了3.更新引擎或许新版修复了呢,这个我不敢保证...
关注本帖(如果有新回复会站内信通知您)
个人IDP证书一年费用? 正确答案:99美金
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版cocos2d-x(27)
很久没有跟大家分享Cocos2d学习时的经验了,今天继续。
首先让我们先了解一下UserDefault这个类,它在游戏中充当保存用户最高分的角色。
UserDefault是一个微型数据库,像我们开发者开发的手机app游戏当需要保存一些分数和信息的时候,用这个类就足矣。当然一些大型手机网游还是会用到数据库的内容。那么今天笔者带大家了解下UserDefault中的几个常用的方法。打个比方,在最开始的游戏界面,你要显示一个最高分数,那么你就要获取这个最高分,我们获取这个分数是通过一个xml文本保存。如果有显示,如果没有,初始文档,根据值类型初始化。
& if(!UserDefault::sharedUserDefault()—&getBoolForKey(&文件名&))
& & &UserDefault::sharedUserDefault()-&setBoolForKey(&文件名&,true);//写入bool判断位
& & &UserDefault::sharedUserDefault()-&setIntegerlForKey(&这里是用户自定义的名称&,0);//设置分数
& & &UserDefault::sharedUserDefault()-&flush();//设置完一定要调用flush,才能从缓冲写入io&
如果你你想更新你的分数,那么逻辑是这样的
if(当前分数&最高分)
& &&UserDefault::sharedUserDefault()-&setIntegerlForKey(&这里是用户自定义的名称&,score);//更新分数
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4841次
排名:千里之外
原创:30篇
(5)(5)(2)(2)(4)(3)(6)(5)cocos2d-x 之 简单数据存储——Userdefault - 推酷
cocos2d-x 之 简单数据存储——Userdefault
***************************************转载请注明出处:
********************************************
好久没有更新cocos2d-x的东西了,是在太忙,木有时间啊= =。。
1.基本概念
本篇文章是介绍,简单数据存储的Userdefault类,在API中:
就是存储一些简单的数据,比如声音的开启关闭,音效的开启关闭,最高分,金币数量的存储这些东西。
这些都是基于一些基本类型的,比如int,float,double,bool,string,二进制 这些东西,
对于它们的存取有相应的 set和 get函数,比如:
找到Userdefault.h
getBoolForKey(const char* pKey);&span style=&white-space:pre&&
getIntegerForKey(const char* pKey);
getFloatForKey(const char* pKey);
getDoubleForKey(const char* pKey);
std::string getStringForKey(const char* pKey);
Data getDataForKey(const char* pKey);&span style=&white-space:pre&&
&/span&// 二进制 参数里的 pKey 就是,你在设置的时候,设置的名称,类似于一个地址,通过这个地址,你可以找到这里存储的东西。 不光这样,其实里面都还有带两个参数的,比如:
getBoolForKey(const char* pKey, bool defaultValue); 其他的和这个也一样,参数有两个的,都是defaultValue,只是类型不一样而已,
它的含义就是,如果你通过pKey查找不到,里面没有值,你就可以让它返回defaultValue值,并且设置成defaultValue值。
其实,如果没有defaultValue也一样,只是设置并返回的是0而已:
&span style=&font-family:Comic Sans MS;font-size:14&&int UserDefault::getIntegerForKey(const char* pKey)
return getIntegerForKey(pKey, 0);
int UserDefault::getIntegerForKey(const char* pKey, int defaultValue)
const char* value =
tinyxml2::XMLElement* rootN
tinyxml2::XMLDocument*
tinyxml2::XMLElement*
getXMLNodeForKey(pKey, &rootNode, &doc);
// find the node
if (node && node-&FirstChild())
value = (const char*)(node-&FirstChild()-&Value());
int ret = defaultV
if (value)
ret = atoi(value);
上面那个是UserDefault类中两个关于int的get函数设置,可以看到没有defaultValue参数的,执行的是将defaultValue设置为0的函数。
相应的对于set来说,就很简单了,只是设置值而已。
setBoolForKey(const char* pKey, bool value);
setIntegerForKey(const char* pKey, int value);
setFloatForKey(const char* pKey, float value);
setDoubleForKey(const char* pKey, double value);
setStringForKey(const char* pKey, const std::string & value);
setDataForKey(const char* pKey, const Data& value);
4.关于flush
然后就是这个flush函数了,
这个函数,话说我没怎么搞太懂,网上也众说纷纭,
API上说是 将内容保存到XML文件中,
而我查了.cpp中的定义是:
void UserDefault::flush()
} 没错,就是这样,而且,在我的游戏中,没有用flush函数,也没有什么异样出现。
5.如何使用
类的相应函数都介绍完了,接下来就是使用的问题,
首先要确定文件是否存在,不存在就初始化它:
if ( !LoadBooleanFromXML(&_IS_EXISTED&))
initUserData();
SaveBooleanToXML(&_IS_EXISTED&, true);
} 然后,无论设置或者获取,格式都必须是:
CCUserDefault::sharedUserDefault()-&setBoolForKey(m_Sound,true);
CCUserDefault::sharedUserDefault()-&getBoolForKey(m_Sound); 前面都要有一长串东东,所以真正在使用时,都会设置宏定义来简化它,比如:
#define GetBool CCUserDefault::sharedUserDefault()-&getBoolForKey
#define SetBool CCUserDefault::sharedUserDefault()-&setBoolForKey
***************************************转载请注明出处:
********************************************
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
排版有问题
没有分页内容
视频无法显示
图片无法显示cocos2dX 之数据存储
今天我们来看cocos2dX里面的数据存储类,
CCUserDefault, 现在的游戏基本都会把用户信息保存下来, 以便于再次进入游戏的时候读取, 为了方便起见,有时我们也可以用CCUserDefault来存储金币数目这种简单的数据项, 当然, 大型数据还是建议使用
闲话不多说, 我们来看看cocos2dX为我们准备了哪些函数:
setBoolForKey( 键值, 值);
//设置一个bool值
setStringForKey( 键值, 值);
//设置一个string值
setDoubleForKey( 键值, 值);
//设置一个double值
setFloatForKey( 键值, 值);
//设置一个float值
setIntegerForKey( 键值, 值);
//设置一个int值
getBoolForKey( 键值);
//读取一个bool值
getStringForKey( 键值);
//读取一个string值
getDoubleForKey( 键值);//读取一个double值
getFloatForKey( 键值);
//读取一个float值
getIntegerForKey( 键值); //读取一个int值
getBoolForKey( 键值, 默认值);
//读取一个bool值
getStringForKey( 键值, 默认值);
//读取一个string值
getDoubleForKey( 键值, 默认值);//读取一个double值
getFloatForKey( 键值, 默认值);
//读取一个float值
getIntegerForKey( 键值, 默认值); //读取一个int值
//保存到文件
话说函数也不是很多啊, 五种类型, set写入, get取出, 很明显的哈希表结构, Key-Valua, Key索引Value的值,
我们先来来写写代码: CCLabelTTF* ttf = CCLabelTTF::create( "null", "Arial", 32);
ttf->setPosition( ccp( visibleSize.width / 2, visibleSize.height / 2));
addChild( ttf, 0, 101);
if ( CCUserDefault::sharedUserDefault()->getBoolForKey( "flag", false))
std::string str = CCUserDefault::sharedUserDefault()->getStringForKey( "str", "null"); //取出string
ttf->setString( str.c_str()); //将字符串的标题设为str
//没有数据
CCUserDefault::sharedUserDefault()->setStringForKey( "str", "now, hava data"); //写入字符串
CCUserDefault::sharedUserDefault()->setBoolForKey( "flag", true);
//写入bool
CCUserDefault::sharedUserDefault()->flush();
//将数据存入xml里面, 不过现在貌似可以不加也可以
我们来看看第一次运行的效果:
第二次运行:
我们再到项目里面的Debug.win32下面看看, 是不是多了一个UserDefault.xml
我们打开这个文件看看:
很熟悉吧, 有两个数据:
key: strvalua:now, hava data
key:flagvalua:true
不过CCUserDefault给我们提供的存储方式是明文存储, 很容易被其他人从外部修改, 所以我们存入xml的时候最好是加密存储, 所以为了防止玩家修改数据, 我们也写个简单的加密解密函数:
在头文件里面定义两个函数:
void encode(std::string &str);
void decode(std::string &str);
实现他们, 这个, 我没有研究过加密解密算法, 所以就来个最简单的:
void HelloWorld::encode(std::string &str)
for(int i = 0; i < str.length(); i++) {
int ch = str[i];
ch = ch ^ 1;
void HelloWorld::decode(std::string &str)
for(int i = 0; i < str.length(); i++) {
int ch = str[i];
ch = ch ^ 1;
使用一下, 看看效果先:
( 旁白: 感觉怎么没有差别呢? 又忽悠我们?), 别急嘛, 我们看看XML文件:
看看, 你能看懂吗?vcD4KPHA+PGJyPgo8L3A+CjxwPjxicj4KPC9wPgo8cD66w8HLLCC98czsvs21vdXiwO8sIM7St6LP1tfuvfy1xLarzve74bK7u+HKx9S9wLTUvbzytaXBy7ChLCC5/bbOyrG85Lj4wLS149PQxNG2yLXEPGltZyBhbHQ9"偷笑" src="/uploadfile/Collfiles/5.gif">}

我要回帖

更多关于 cocos2dx userdefault 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信