您的位置:首页 >> Cocos2d-x >> 和屌丝一起学cocos2dx-数据存储

和屌丝一起学cocos2dx-数据存储

[ 孤狼 | 2015-02-09 17:24:29 | Cocos2d-x | 2697°C | 0条评论 ]
声 明

本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。
gl.paea.cn版权所有。


       大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程,上节我们说到了音乐音效,不知道大家有没有做出来效果呢?这节我们还是要继续学习哦,可别偷懒,这节我们要说的是数据存储。



【一】:最简简介


       手机游戏中,用户数据存储有多种方式,网游可以直接保存服务器,单机可以保存在SQLite等,cocos2dx为了更好的跨平台操作,采用了自己的CCUserDefault。


【二】:函数


setBoolForKey("键","值");            //设置一个bool值

setStringForKey("键","值");         //设置一个string值

setDoubleForKey("键","值");        //设置一个double值

setFloatForKey("键","值");           //设置一个float值

setIntegerForKey("键","值");        //设置一个int值

getBoolForKey("键","默认值");    //读取一个bool值

getStringForKey("键","默认值");  //读取一个string值

getDoubleForKey("键","默认值");//读取一个double值

getFloatForKey("键","默认值");    //读取一个float值

getIntegerForKey("键","默认值"); //读取一个int值

flush();                                              //保存到文件


这里set就是用键值对保存数据,最后一定要用flush把数据保存到文件,否则会丢失。

get函数获取数据的时候,要给个默认值,以便获取不到的时候代替数据,防止空异常。



【三】:示例


1.新建项目Datademo


Datademo.cpp


CCSize mysize=CCDirector::sharedDirector()->getWinSize();

CCLabelTTF* pLabel = CCLabelTTF::create("none", "Arial", 24);

pLabel->setPosition(ccp(mysize.width / 2, mysize.height - 50));

this->addChild(pLabel, 1);

//判断数据

if(CCUserDefault::sharedUserDefault()->getBoolForKey("havedata",false)){

   //有存档

   string jj=CCUserDefault::sharedUserDefault()->getStringForKey("jj","none");

   double aa=CCUserDefault::sharedUserDefault()->getDoubleForKey("aa",0.0);

   double bb=CCUserDefault::sharedUserDefault()->getFloatForKey("bb",0.0f);

   double cc=CCUserDefault::sharedUserDefault()->getIntegerForKey("cc",0);

   //转换

   //jj.data();可以直接获取值

   char out[50];

   sprintf(out,"%f",aa);

   //输出

   pLabel->setString(out);

}else{

   //没存档

   pLabel->setString("no data,now set.");

   CCUserDefault::sharedUserDefault()->setBoolForKey("havedata",true);

   CCUserDefault::sharedUserDefault()->setStringForKey("jj","Hello Boy!");

   CCUserDefault::sharedUserDefault()->setDoubleForKey("aa",1.25);

   CCUserDefault::sharedUserDefault()->setFloatForKey("bb",2.33f);

   CCUserDefault::sharedUserDefault()->setIntegerForKey("cc",5);

   //保存

   CCUserDefault::sharedUserDefault()->flush();

}



       好了,我们来看一下效果。





本节DEMO下载


转载请注明出处:http://gl.paea.cn/n.php?n=31
 
如您看得高兴,欢迎随意投喂,让我们坚持创作!
赞赏一个鸡腿
还没有人留下遗迹
综合 · 搜索