Cocos2d-x 節點內建調度器,無需額外 Timer 類。
scheduleUpdate():每幀調用 update(float dt)。schedule(selector, interval):固定間隔調用自定義函數,selector 為 SEL_SCHEDULE 函數指針。// 每幀移動
void HelloWorld::update(float dt) {
label->setPosition(label->getPosition() + Point(1,1));
if (label->getPosition().x > 500) unscheduleUpdate();
}
// 每秒執行一次
schedule(schedule_selector(HelloWorld::timerHandler), 1.0f);
類似 Android SharedPreferences,鍵值對持久化。
UserDefault::getInstance()->setStringForKey("name", "Livingstone");
string s = UserDefault::getInstance()->getStringForKey("name1", "Hello World");
使用 C/C++ 標準 IO,但需通過 FileUtils 獲取可寫目錄路徑。
FileUtils* fu = FileUtils::getInstance();
FILE* f = fopen(fu->fullPathFromRelativeFile("data.txt", fu->getWritablePath()).c_str(), "w");
fprintf(f, "Hello"); fclose(f);
// 讀取
Data d = fu->getDataFromFile(fu->fullPathFromRelativeFile("data.txt", fu->getWritablePath()));
log("%s", d.getBytes());
Plist 為 XML 格式鍵值集合,FileUtils 提供 getValueMapFromFile / getValueVectorFromFile。
ValueMap vm = fu->getValueMapFromFile("Info.plist");
log("%s", vm["name"].asString().c_str());
bool bl = vm["isgirl"].asBool();
內建 TinyXML2,解析字符串後遍歷節點屬性。
auto doc = new tinyxml2::XMLDocument();
doc->Parse(fu->getStringFromFile("data.xml").c_str());
for (auto e = doc->RootElement()->FirstChildElement(); e; e = e->NextSiblingElement()) {
string str;
for (auto attr = e->FirstAttribute(); attr; attr = attr->Next())
str += attr->Name() + ":" + attr->Value() + ",";
log("%s", str.c_str());
}
內建 RapidJSON,解析後按索引/鍵訪問。
rapidjson::Document d;
d.Parse<0>(fu->getStringFromFile("dj.json").c_str());
log("%s", d[rapidjson::SizeType(0)]["name"].GetString());