//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;
}

UserDefault数据读取的更多相关文章

  1. OleDbDataReader快速数据读取方式

    查询得到OleDbDataReader后,有三种方式支持数据读取,如下: //方法一**速度中等 OleDbDataReader reader = command.ExecuteReader(); w ...

  2. DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)

    /// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...

  3. geotrellis使用(二)geotrellis-chatta-demo以及geotrellis框架数据读取方式初探

    在上篇博客(geotrellis使用初探)中简单介绍了geotrellis-chatta-demo的大致工作流程,但是有一个重要的问题就是此demo如何调取数据进行瓦片切割分析处理等并未说明,经过几天 ...

  4. GPS数据读取与处理

    GPS数据读取与处理 GPS模块简介 SiRF芯片在2004年发布的最新的第三代芯片SiRFstar III(GSW 3.0/3.1),使得民用GPS芯片在性能方面登上了一个顶峰,灵敏度比以前的产品大 ...

  5. 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

    本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...

  6. MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)

    振动论坛原版主eight的经典贴http://www.chinavib.com/thread-45622-1-1.html MATLAB对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于 ...

  7. TableInputFormat分片及分片数据读取源码级分析

    我们在MapReduce中TextInputFormat分片和读取分片数据源码级分析 这篇中以TextInputFormat为例讲解了InputFormat的分片过程以及RecordReader读取分 ...

  8. Extjs的数据读取器store和后台返回类型简单解析

    工作中用到了Extjs,从后台获取数据的时候,用到了extjs自己的Ext.data.store方法,然后封装了ExtGridReturn方法, 目的:前台用到Ext.data.store读取从后台传 ...

  9. Java学习-028-JSON 之二 -- 数据读取

    JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...

随机推荐

  1. 实践Scrum

    http://blog.vsharing.com/agiledo/ [原创]敏捷开发实践-我们这样实践Scrum-续(81页) 我们团队实践Scrum,有一些做法和教训,希望和大家分享: 公司背景:通 ...

  2. vs中web配置可浏览json数据文件

    在日常的前端开发中,我们会制作一些数据文件,常用的有后缀名为json的文件,但是vs在启动项目时,是不能浏览json文件的,常见的错误提示如下图所示 解决这个错误,只需要在web.config文件中配 ...

  3. Asp.Net请求响应过程

    Asp.Net请求响应过程 在之前,我们写了自己的Asp.Net框架,对整个流程有了一个大概的认识.这次我们来看一下Asp.Net整个请求处理过程是怎么样的. 浏览器封装请求报文,发送请求到达服务器, ...

  4. SOCKET网络编程细节问题3

    SOCKET网络编程快速上手(二)——细节问题(3) 3.SIGPIPE问题 人怕牺牲,我们写的程序也一样,人有死不瞑目,程序又何尝不是?程序跑着跑着,突然就崩掉了.好一点的牺牲前告诉你些打印,差点的 ...

  5. svn签出单个文件

    ) { return new string[]{ string.Format("cd /d \"{0}\"",System.IO.Path.GetDirecto ...

  6. Java集合概述、Set集合(HashSet类、LinkedHashSet类、TreeSet类、EnumSet类)

    Java集合概述.Set集合(HashSet类.LinkedHashSet类.TreeSet类.EnumSet类) 1.Java集合概述1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指 ...

  7. Linux下SSH+Firefox

    Linux下SSH+Firefox 简明FQ攻略 FQ的软件有很多,楼主原来在Windows下用过Tor(洋葱头).Puff.freegate等,一般只需要打开FQ软件,简单的设置后就可以FQ浏览了. ...

  8. Android中ListView下拉刷新的实现

    ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考.那我就不解释,直接上代码了. 这里需要自己重写一下ListView,重写代码如下: packa ...

  9. 【Servlet3.0新特性】第03节_文件上传

    这是一个Web Project 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web- ...

  10. idea下git版本回退

    首先选中项目名,然后 ,show history, copy你想要回退版本的reversion number, ,然后在branches里check out你想要回退的版本