//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. 对象池化技术 org.apache.commons.pool

    恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率.Jakarta Commons Pool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以 ...

  2. Make Things Move -- Javascript html5版(一)文件目录结构和工具方法准备

    从这一篇开始,就来开始我们的make things move之旅吧 在此之前,要知道ActionScript(AS)的语法和JS是不一样的,AS是相对于JS而言更好的支持了面向对象的特性,所以我们可以 ...

  3. gcc编译器优化给我们带来的麻烦???

    gcc编译器优化给我们带来的麻烦??? 今天看到一个很有趣的程序,如下: ? 1 2 3 4 5 6 7 8 9 int main() {     const int a = 1;     int * ...

  4. C++中的引用和移动语义

    C++引用现在分为左值引用和右值引用.其实很好理解,左值引用中的左值指的就是能出现在等号左边的值(带名称的变量,带*号的指针等一类的数据),程序能对这样的左值进行引用获得其地址:右值引用中的右值指的就 ...

  5. DAS,NAS,SAN在数据库存储上的应用

    DAS,NAS,SAN在数据库存储上的应用 一. 硬盘接口类型1. 并行接口还是串行接口(1) 并行接口,指的是并行传输的接口,比如有0~9十个数字,用10条传输线,那么每根线只需要传输一位数字,即可 ...

  6. .net程序员求职简历

    .net程序员求职简历 个人概况 姓名 齐志超 学历 专科 毕业学校 河北软件职业技术学院 专业 软件开发与设计 手机 18730269286 年龄 22 性别 男 现居住地 北京 电子邮件 qzc9 ...

  7. Android屏幕相关设置

    锁屏设置: 1. 初始值 : <integer name="def_screen_off_timeout">60000</integer> 2. 数据库/d ...

  8. Visual Studio属性配置中使用宏

    在学习C语言的时候,我们曾经遇到过一个宏的概念.宏的作用机理本质上是宏的展开,C语言中的宏的用法也有很多种(水其实很深...),不过从感觉上来讲,人们大致上会在以下的场景中,利用宏来解决一些窘境:一是 ...

  9. .NET中的类库

    1.object类  所有类都继承于object类,是顶级父类,他有以下成员,都是虚方法:  a)   ToString() 默认输出对象所属类的全名称(命名空间.类名) b)   Equals (O ...

  10. base关键字

    base关键字      专门用来在子类访问父类成员 base.标识符:“.”调用父类同名属性.同名函数.构造函数 ()父类person public class Person { public Pe ...