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值
flush(); //保存到文件
话说函数也不是非常多啊, 五种类型, 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"); //取出stringttf->setString( str.c_str()); //将字符串的标题设为str} else{//没有数据CCUserDefault::sharedUserDefault()->setStringForKey( "str", "now, hava data"); //写入字符串CCUserDefault::sharedUserDefault()->setBoolForKey( "flag", true); //写入boolCCUserDefault::sharedUserDefault()->flush(); //将数据存入xml里面, 只是如今貌似能够不加也能够}
我们来看看第一次执行的效果:
第二次执行:
我们再到项目里面的Debug.win32以下看看, 是不是多了一个UserDefault.xml
我们打开这个文件看看:
非常熟悉吧, 有两个数据:
key: str<====>valua:now, hava data
key:flag<====>valua:true
只是CCUserDefault给我们提供的存储方式是明文存储, 非常easy被其它人从外部改动, 所以我们存入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; str[i] = ch; }
} //解密
void HelloWorld::decode(std::string &str)
{ for(int i = 0; i < str.length(); i++) { int ch = str[i]; ch = ch ^ 1; str[i] = ch; }
}
使用一下, 看看效果先:
( 旁白: 感觉怎么没有区别呢? 又忽悠我们?), 别急嘛, 我们看看XML文件:
看看, 你能看懂吗?
好了, 今天就到这里, 我发现近期的东西会不会是越来越简单了啊, 过段时间给来点有难度的
转载于:https://www.cnblogs.com/jhcelue/p/7137826.html
cocos2dX 之数据存储相关推荐
- cocos2d-x lua table数据存储
cocos2d-x lua table数据存储 version: cocos2d-x 3.6 1. 将table转为json http://blog.csdn.net/songcf_faith/art ...
- mysql修改路径报错_mysql修改数据存储路径报错处理
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' 解决?: >>> vim ...
- 英特尔 QLC 3D NAND 数据存储
英特尔 QLC 3D NAND 数据存储 NAND是什么 由于SSD固态硬盘的普及,NAND这个词逐渐进入用户们的视线.许多厂商都在产品宣传中提到3D NAND颗粒等词汇,对于普通用户来讲,完全不知道 ...
- Android的数据存储方式
1.Shared Preferences 2.文件存储数据 3.数据库 4.Content Provider存储数据,是所有应用程序之间数据存储和检索的一个桥梁,它的作用就是使得各个应用程序之间实现数 ...
- mysql更改数据库数据存储目录_MySQL更改数据库数据存储目录
MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录.下文总结整理了实践过程的操作步骤. 1:确认MySQL数据库存储目 ...
- AS3.0编程 So本地数据存储(“超级cookies”)--AS3:Local SharedObject
Flash影片运行过程中,大多数的数据都存储于影片本身,一旦影片被关闭,这些数据也就从内存中被清除掉,下次运行时,数据将从头开始.若想存储数据或者让客户端的多个影片共享同一组数据,就要想办法把数据存储 ...
- Java中数据存储方式
2019独角兽企业重金招聘Python工程师标准>>> 1. 寄存器(register).这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有限, ...
- IOS数据存储之文件沙盒存储
前言: 之前学习了数据存储的NSUserDefaults,归档和解档,对于项目开发中如果要存储一些文件,比如图片,音频,视频等文件的时候就需要用到文件存储了.文件沙盒存储主要存储非机密数据,大的数据. ...
- 华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略
大数据处理当中,数据储存始终是一个重要的环节,从现阶段的市场现状来说,以Hadoop为首的大数据技术框架,仍然占据主流地位,而Hadoop的HDFS,在数据存储方面,仍然得到重用.今天的大数据入门分享 ...
最新文章
- 如何更优雅地对接第三方API
- 使用python画CDF
- NYOJ 20 吝啬的国度(深搜)
- (学)DEV在设计界面部分组件显示红叉并报错的问题
- SSM中使用Druid连接池
- Android Handler.removeCallbacksAndMessages(null)的作用
- Python3 爬虫学习笔记 C18【爬虫框架 pyspider — 深入理解】
- python idle是什么_下载下来的IDLE是个什么鬼
- Linux打包压缩.md
- 黑白群晖用做airplay一条命令实现USB声卡转音箱的网络播放(Docker-shairport-sync容器)
- 稀奇古怪--JAVA篇
- 微信小程序 + 腾讯位置服务获取全国城市列表
- win7休眠不断网的设置方法
- _kbhit函数详解
- 【时间函数】gettimeofday
- javaScript的console
- 扫一扫,一键生成微信个人数据报告
- 考研概率论与数理统计
- 俄罗斯游戏java源代码_Java俄罗斯方块游戏源代码JAVA游戏源码下载
- 新名词|什么是「电源」程序员?
热门文章
- Linux C 算法与数据结构 --二叉树
- 单硬盘上mac + win7双系统,GUID-GPT分区
- md /mdd /ml /mt/mtd
- Windows系统USB转CDC串口驱动限制说明
- [NodeJs] 如何获取项目的根路径?
- Taro+react开发(18)--定义变量值
- 前端学习(3132):react-hello-react之react中事件处理
- [css] 异步加载CSS的方式有哪些?
- [js] document.domain的作用是什么?它有什么限制?
- 工作269:uni--客流分析优化