博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UserDefault数据读取
阅读量:5279 次
发布时间:2019-06-14

本文共 2174 字,大约阅读时间需要 7 分钟。

//GameScene.h

#include "cocos2d.h"
USING_NS_CC;
class GameScene : public cocos2d::Layer
{
public:
    static cocos2d::Scene* createScene();
    
    virtual bool init();
    
    void menuCallback(Ref* pSender);
    
    CREATE_FUNC(GameScene);
    
private:        //注意不能用auto关键字
    Size size;
    Sprite *sprite;
};

 

 

//GameScene.cpp

//  Created by Jacedy on 14-8-11.
#include "GameScene.h"
USING_NS_CC;
cocos2d::Scene* GameScene::createScene()
{
    auto scene = Scene::create();   //创建一个场景
    auto layer = GameScene::create();   //创建一个图层
    scene->addChild(layer);
    return scene;
}
//初始化当前的图层
bool GameScene::init()
{
    if(!Layer::init())      //初始化父类
        return false;
    
    //获取屏幕大小
    size = Director::getInstance()->getVisibleSize();
    //auto size = Director::getInstance()->getWinSize();
    //添加一个图片精灵
    sprite = Sprite::create("OnePiece_1.png");
    sprite->setPosition(Vec2(size.width/2, size.height/2));
    this->addChild(sprite);
    
    //新建数据
    UserDefault::getInstance()->setBoolForKey("BOOL", true);
    UserDefault::getInstance()->setFloatForKey("Float", 12.18);
    UserDefault::getInstance()->setStringForKey("String", "Jacedy");
    
    //保存数据
    UserDefault::getInstance()->flush();
    
    bool b = UserDefault::getInstance()->getBoolForKey("BOOL", false);      //第二个参数为初始化内容
    float f = UserDefault::getInstance()->getFloatForKey("Float", 0.0f);
    std::string s = UserDefault::getInstance()->getStringForKey("String", "null");
    
    //打印输出
    log("b = %d", b);
    log("f = %f", f);
    log("s = %s", s.c_str());
    
    //获取文件路径
    //FileUtils::getInstance()->getWritablePath();
    
    //判断XML文件是否存在
    //UserDefault::getInstance()->isXMLFileExit();
    
    return true;
}
void GameScene::menuCallback(Ref* pSender)
{
    
}

备注:使用UserDefault保存最高分、声音等一些数据,当用户结束了游戏重新打开时,如果使用 isXMLFileExit() 来判断XML文件是否存在,那么系统就会初始化XML文件,里面原来的数据也就清除了。所以不能用isXMLFileExit() ,解决办法:通过直接判断一个键值是否存在来获取XML文件数据,代码如下:

bool MenuLayer::init()

{
if(!Layer::init())      //初始化父类
 return false;
size = Director::getInstance()->getVisibleSize();
//初始化最高分数
if(!UserDefault::getInstance()->getBoolForKey("isExit", false))
{
 UserDefault::getInstance()->setBoolForKey("isExit",true);
 m_bestscore = 0;
 UserDefault::getInstance()->setIntegerForKey("m_bestscore", 0);
 //第一次运行时,如果XML文件不存在就会新建
 UserDefault::getInstance()->flush();     
}
return true;
}

转载于:https://www.cnblogs.com/cjswwdz/p/4661846.html

你可能感兴趣的文章
jQuery的$.ajax方法响应数据类型有哪几种?本质上原生ajax响应数据格式有哪几种,分别对应哪个属性?...
查看>>
第8章 IO类
查看>>
Insert data from excel to database
查看>>
用户控件赋值
查看>>
NodeJs读取源代码使用的字符集
查看>>
《Linux命令、编辑器与shell编程》第三版 学习笔记---000
查看>>
Ajax学习
查看>>
python类及其方法
查看>>
混合连接(解决通路歧义)
查看>>
Vue http.get vue-resource
查看>>
转载:JVM GC机制
查看>>
EGL 1.0 学习笔记
查看>>
关于bootstrap时间控件datetimepicker的位置错乱问题
查看>>
上班第一天,挑战算法大牛们,你能做出来吗
查看>>
E4 - Eclipse 4.x 和 XWT的关系
查看>>
1257: [CQOI2007]余数之和sum - BZOJ
查看>>
软件包管理
查看>>
iOS开发-仿微信图片分享界面实现
查看>>
java集合及其方法
查看>>
苹果手机浏览器下拉会闪动的解决办法
查看>>