本系列学习教程使用的是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期:游戏中数据的存储(上)的更多相关文章

  1. 【Cocos2d-X开发学习笔记】第30期:游戏中数据的存储(下)

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.对数据进行编解码 在上一期中,我们使用了CC ...

  2. 基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象

    1.CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点.多段线.文字.圆等)和看不见(图层.线型.颜色等)的都是对象,数据库本身也是一个对象. 直线.圆弧 ...

  3. 【Android开发学习笔记】【第七课】五大布局-上

    概念 Android程序各式各样,依靠的就是布局,先来看看布局都是怎么来的: 白色部分就是我们经常用的几种布局,主要说说介绍下面五大布局 FrameLayout AbsoluteLayout Line ...

  4. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  5. Flutter学习笔记(29)--Flutter如何与native进行通信

    如需转载,请注明出处:Flutter学习笔记(29)--Flutter如何与native进行通信 前言:在我们开发Flutter项目的时候,难免会遇到需要调用native api或者是其他的情况,这时 ...

  6. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  7. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

  8. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址

    驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...

  9. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

随机推荐

  1. js 实现tab选项卡

    最近一直在研究js  如果不及时复习的话前边学到的东西很快就会忘掉,所以把前段时间的一个简单的tab选项卡的思路写出来也算复习了一下吧, 第一步:先把布局写出来: <div id="d ...

  2. C#DataTable操作

    ] 在DataSet中添加DataTable DataSet.Tables.Add(DataTable) 实例: DataSet ds=new DataSet(); DataTable table=n ...

  3. WPF之核心面板(容器)控件简单介绍

    一.Canvas 1.官方表述:定义一个区域,在该区域中可以使用相对于该区域的坐标显式定位子元素. 2.对于canvas 的元素的位置,是靠控件的大小及Canvas.Top.Canvas.Left.C ...

  4. node应用通过multer模块实现文件上传

    multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单MIME编码为multipart/form-data类型的数据请求. 如果要处理其他编码的表单数据可以通过 ...

  5. 学习WindowsPhone 2013/12/22

    菜鸟一枚,只能边看别人的博客变学习来提升自己,参考博客内容:http://blog.csdn.net/column/details/wp-comming.html?page=3 ,稍微看了一下,写的还 ...

  6. DM9000C网卡驱动程序移植

    1.取消版本号不符终止程序运行 2.iobase基地址修改为s3c3440的0x20000000 3.网卡使用的中断号改为IRQ_EINT7 4.中断触发方式改为上升沿触发 5.设置S3C2440的m ...

  7. bzoj2180: 最小直径生成树

    Description 输入一个无向图G=(V,E),W(a,b)表示边(a,b)之间的长度,求一棵生成树T,使得T的直径最小.树的直径即树的最长链,即树上距离最远的两点之间路径长度. Input 输 ...

  8. 工作总结:将电脑中的ARP缓存清空黑屏命令

    ARP -d 将电脑中的ARP缓存清空ARP-a  查看arp缓存arp-s   ip与mac绑定

  9. STL容器介绍(转)

    STL的容器可以分为以下几个大类: 一:序列容器, 有vector, list, deque, string. 二 : 关联容器,     有set, multiset, map, mulmap, h ...

  10. Eclipse调试的一些小技巧

    不要使用System.out.println作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志 1.条件断点 想象一下我们平时如何添加断点,通常的做法是双击行号的左边.在de ...