Cocos2d-x3.2 UserDefault用戶數據

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

 

 

//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)
{
    
}spa

備註:使用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;
} 圖片

相關文章
相關標籤/搜索