cocos2dx基础篇(20)-数据存储CCUserDefault

  

<强>

,,,,一个游戏怎么能没有游戏存档呢?在cocos2dx中也提供了一个数据存储类,可以作为一个轻量级的数据库来使用。

,,,,它支持五种数据bool, int,浮动,翻倍,字符串的存储。


<强>

,,,, http://gl.paea.cn/contents/252ac3e59bc18069.html


<强>

,,,, https://github.com/shahdza/Cocos_LearningTest/tree/master/demo_%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8CCUserDefault 


<强>

改为

//void  setDataForKey (const  char *, pKey,, const  Data&,值);   Data  getDataForKey (const  char *, pKey,, const  Data&, defaultValue =,数据::Null);//

,,,,


<人力资源/>


<强>

,,,,类和之前讲的CCDirector, SimpleAudioEngine一样,都是采用

,,,,可以通过函数来获取其唯一的实例对象。

,,,, CCUserDefault采用,就是一般的键值对,这个类似c++中的地图的映射(键-值)。一个关键字对应一个值。其实现的接口也比较简单实用,通过传统的设置(),有()方法访问和修改值。

,,,,它支持五种数据:,,,,。


<强>

,,,,(1)类似地图的映射<强> 强。一个关键字对应一个值,并利用进行访问。

,,,,(2)数据直接存储在一个<强> 强,并且文件名为程序项目的名字,如“MyTest.xml”。

,,,,(3)首次使用时,XML不存在,CCUserDefault会自动创建相应的XML文件。


<强>

,,,,通过(键-值)的方式进行设置。

//void  setBoolForKey (,, const  char *, pKey,, bool 价值),,,,,,,,,,,,,,,,//设置一个bool值   void  setIntegerForKey (const  char *, pKey,, int 价值),,,,,,,,,,,,,,,,,//设置一个int值   void  setFloatForKey (const 才能;char *, pKey,, float 价值),,,,,,,,,,,,,,,//设置一个浮点值   void  setDoubleForKey (char *, const  pKey,, double 价值),,,,,,,,,,,,,,//设置一个值的两倍   void  setStringForKey (char *, const  pKey,, const  std:: string&,值),,//设置一个字符串值//


<强>

,,,,通过关键字,来从XML文件中获取数据值。

,,,,

//bool  getBoolForKey (,, const  char *, pKey,, bool  defaultValue =, false),,,,,,,,,,,,,,,,,,,,//读取一个bool值   int  getIntegerForKey (const  char *, pKey,, int  defaultValue =, 0),,,,,,,,,,,,,,,,,,,,,,,,,,//读取一个int值   float  getFloatForKey (const 才能;char *, pKey,, float  defaultValue =, 0.0),,,,,,,,,,,,,,,,,,,,//读取一个浮点值   double  getDoubleForKey (char *, const  pKey,, double  defaultValue =, 0.0),,,,,,,,,,,,,,,,,,//读取一个值的两倍   std:: string  getStringForKey (char *, const  pKey,, const  std:: string&, defaultValue =, " ");//读,取一个字符串值//


<强>

,,,,当设置完后,数据不会马上保存到XML文件中。

,,,,

//CCUserDefault: sharedUserDefault ()→flush ();//


<强>

,,,,获取单例对象,释放单例对象,获取XML文件路径,判断XML文件是否已经存在。

//static  CCUserDefault *, sharedUserDefault();,,//获取单例对象   static  void  purgeSharedUserDefault(),,,,,,,,//释放单例对象   const  static  std:: string&, getXMLFilePath();,//获取XML路径   static  bool  isXMLFileExist (),,,,,,,,,,,,,,,,//XML文件是否已创建//


<强>

,,,,(1)每次操作都要打长长的CCUserDefault:: sharedUserDefault(),来获得单例对象。是不是很麻烦呢?可以通过宏定义来缩短长度。

//# define  UserDefault  CCUserDefault: sharedUserDefault ()   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

cocos2dx基础篇(20)-数据存储CCUserDefault