天天看點

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;

};

//gamescene.cpp

//  created by jacedy on 14-8-11.

#include "gamescene.h"

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;