【Cocos2d-X开发学习笔记】第29期:游戏中数据的存储(上)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010
一般游戏中都需要记录玩家数据,便于玩家下次登录时能够接着上次的游戏记录继续游戏。这样一来就需要我们在
开发时对玩家数据进行存档与读档。对于游戏数据的存储,在不同手机操作系统下都有自己的存储方式,例如常见的
SQLite等,在Cocos2D-X引擎中考虑到跨平台性,它也为开发者提供了跨平台的存储相关类CCUserDefault,那么这
一期我们就一起来学习如何使用Cocos2D-X提供的CCUserDefault。
一、游戏数据存储
由于CCUserDefault的函数都是静态调用,是不需要创建其对象的,所以下面我们一起来看看CCUserDefault的一
些常用函数。
<1> setBoolForKey(const char * pKey,bool value)
作用:保存一个bool类型数据。
参数1:key。
参数2:value。
<2> setDoubleForKey(const char * pKey,double value)
作用:保存一个double类型数据。
参数1:key。
参数2:value。
<3> setFloatForKey(const char * pKey,float value)
作用:保存一个float类型数据。
参数1:key。
参数2:value。
<4> setIntegerForKey(const char * pKey,int value)
作用:保存一个int类型数据。
参数1:key。
参数2:value。
<5> setStringForKey(const char * pKey,string & value)
作用:保存一个string类型数据。
参数1:key。
参数2:value。
<6> bool getBoolForKey(const char * pKey,bool defaultValue)
作用:获取存储一个bool类型数据。
参数1:key。
参数2:当key对应的数据不存在时,默认返回的值。
<7> bool getDoubleForKey(const char * pKey,double defaultValue)
作用:获取存储一个double类型数据。
参数1:key。
参数2:当key对应的数据不存在时,默认返回的值。
<8> bool getFloatForKey(const char * pKey,float defaultValue)
作用:获取存储一个float类型数据。
参数1:key。
参数2:当key对应的数据不存在时,默认返回的值。
<9> bool getIntegerForKey(const char * pKey,int defaultValue)
作用:获取存储一个int类型数据。
参数1:key。
参数2:当key对应的数据不存在时,默认返回的值。
<10> bool getStringForKey(const char * pKey,string & defaultValue)
作用:获取存储一个string类型数据。
参数1:key。
参数2:当key对应的数据不存在时,默认返回的值。
<11> bool flush()
作用:提交数据,将数据存入文件中。
通过学习CCUserDefault提供的函数后,我们可以看出这些函数的使用方法很简单,但是在使用时需要提醒大家注意两点:
<1> 不论是存储了一个还是多个支持的数据类型后,都必须调用flush()函数,当flush()被调用后,你之前存储的数据
才会真正保存到存储文件中。
<2> 使用CCUserDefault的getXXX函数时,应尽可能传入一个默认值(第2个参数),以免获取到空数据造成程序异
常等。
二、数据存储实例
1、首先新建Cocos2D-X项目,取名为“MyDataSave01”,然后在HelloWorldScene.cpp文件的init函数中添加如下所
示代码。
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init()); CCLabelTTF *ttf = CCLabelTTF::create("", "Helvetica", 23);
ttf->setPosition(ccp(240,160));
addChild(ttf); if(CCUserDefault::sharedUserDefault()->getBoolForKey("bool",false)){
ttf->setString("hava data , start read data"); //Load
bool iBool = CCUserDefault::sharedUserDefault()->getBoolForKey("bool",false);
double iDouble = CCUserDefault::sharedUserDefault()->getDoubleForKey("double",0.0);
float iFloat = CCUserDefault::sharedUserDefault()->getFloatForKey("float",0.0);
int iInt = CCUserDefault::sharedUserDefault()->getIntegerForKey("int",0);
std::string iString = CCUserDefault::sharedUserDefault()->getStringForKey("string",""); }else{
ttf->setString("not hava data , start save data"); CCUserDefault::sharedUserDefault()->setBoolForKey("bool", true);
CCUserDefault::sharedUserDefault()->setDoubleForKey("double", 9.22);
CCUserDefault::sharedUserDefault()->setFloatForKey("float", 8.23);
CCUserDefault::sharedUserDefault()->setIntegerForKey("int", 23);
CCUserDefault::sharedUserDefault()->setStringForKey("string", "Himi");
//提交
CCUserDefault::sharedUserDefault()->flush();
} bRet = true;
} while (0); return bRet;
}
2、项目效果图。
<1> 第一次运行项目。
<2> 第二次运行项目。
【Cocos2d-X开发学习笔记】第29期:游戏中数据的存储(上)的更多相关文章
- 【Cocos2d-X开发学习笔记】第30期:游戏中数据的存储(下)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.对数据进行编解码 在上一期中,我们使用了CC ...
- 基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象
1.CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点.多段线.文字.圆等)和看不见(图层.线型.颜色等)的都是对象,数据库本身也是一个对象. 直线.圆弧 ...
- 【Android开发学习笔记】【第七课】五大布局-上
概念 Android程序各式各样,依靠的就是布局,先来看看布局都是怎么来的: 白色部分就是我们经常用的几种布局,主要说说介绍下面五大布局 FrameLayout AbsoluteLayout Line ...
- Rest API 开发 学习笔记(转)
Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...
- Flutter学习笔记(29)--Flutter如何与native进行通信
如需转载,请注明出处:Flutter学习笔记(29)--Flutter如何与native进行通信 前言:在我们开发Flutter项目的时候,难免会遇到需要调用native api或者是其他的情况,这时 ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
随机推荐
- js 实现tab选项卡
最近一直在研究js 如果不及时复习的话前边学到的东西很快就会忘掉,所以把前段时间的一个简单的tab选项卡的思路写出来也算复习了一下吧, 第一步:先把布局写出来: <div id="d ...
- C#DataTable操作
] 在DataSet中添加DataTable DataSet.Tables.Add(DataTable) 实例: DataSet ds=new DataSet(); DataTable table=n ...
- WPF之核心面板(容器)控件简单介绍
一.Canvas 1.官方表述:定义一个区域,在该区域中可以使用相对于该区域的坐标显式定位子元素. 2.对于canvas 的元素的位置,是靠控件的大小及Canvas.Top.Canvas.Left.C ...
- node应用通过multer模块实现文件上传
multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单MIME编码为multipart/form-data类型的数据请求. 如果要处理其他编码的表单数据可以通过 ...
- 学习WindowsPhone 2013/12/22
菜鸟一枚,只能边看别人的博客变学习来提升自己,参考博客内容:http://blog.csdn.net/column/details/wp-comming.html?page=3 ,稍微看了一下,写的还 ...
- DM9000C网卡驱动程序移植
1.取消版本号不符终止程序运行 2.iobase基地址修改为s3c3440的0x20000000 3.网卡使用的中断号改为IRQ_EINT7 4.中断触发方式改为上升沿触发 5.设置S3C2440的m ...
- bzoj2180: 最小直径生成树
Description 输入一个无向图G=(V,E),W(a,b)表示边(a,b)之间的长度,求一棵生成树T,使得T的直径最小.树的直径即树的最长链,即树上距离最远的两点之间路径长度. Input 输 ...
- 工作总结:将电脑中的ARP缓存清空黑屏命令
ARP -d 将电脑中的ARP缓存清空ARP-a 查看arp缓存arp-s ip与mac绑定
- STL容器介绍(转)
STL的容器可以分为以下几个大类: 一:序列容器, 有vector, list, deque, string. 二 : 关联容器, 有set, multiset, map, mulmap, h ...
- Eclipse调试的一些小技巧
不要使用System.out.println作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志 1.条件断点 想象一下我们平时如何添加断点,通常的做法是双击行号的左边.在de ...