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