博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cocos2d-x3.2 UserDefault用户数据
阅读量:6551 次
发布时间:2019-06-24

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

  hot3.png

//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://my.oschina.net/Jacedy/blog/301859

你可能感兴趣的文章
[Andriod官方训练教程]管理Activity的生命活动之开始一个Activity
查看>>
自定义Navigation按钮及Title
查看>>
Carmark算法,我的实现
查看>>
js获取当前日期时间“yyyy-MM-dd HH:MM:SS”
查看>>
Luogu P2613 【模板】有理数取余
查看>>
[Codeforces266E]More Queries to Array...——线段树
查看>>
Java EE思维导图
查看>>
OBS MAC 系统开发(基于mac OS X 10.12)
查看>>
python set dict tuple and list
查看>>
远程仓库里面有多个远程分支和本地的多个分支
查看>>
quilt
查看>>
数据挖掘-数据仓库
查看>>
block作为函数参数回调
查看>>
Handlebars.js,Json+ajax+拼html
查看>>
输入表
查看>>
IP地址结构分类(包括主机号和网络好计算)
查看>>
快学Scala 第十课 (包和包对象)
查看>>
(转)Linux内核调度策略与算法分析 (1)
查看>>
jsp三种注释方法
查看>>
Hadoop 之 Spark 安装配置与示例
查看>>