xml就可以擴充套件標記語言。在遊戲開發中,經常使用於儲存遊戲資訊,如最高分,遊戲等級。等資訊,和描寫敘述一些資源等,我第一次使用xml是在使用ccanimation建立動畫中,使用plist檔案載入動畫時。使用了xml檔案當中plist檔案事實上就是乙個xml檔案,在前面的部落格中的在cocos2d-x中使用瓦片地圖《一》和在cocos2d-x中使用瓦片地圖《二》中使用瓦片地圖編輯器建立的瓦片地圖儲存後會得到乙個tmx格式的檔案,tmx檔案也是乙個xml檔案
xml檔案還能夠解決中文亂碼的問題,cocos2d-x**現中文編碼亂碼是由於編碼方式的不同,在windows下通常使用
vc作為ide,而vc使用的是gtk編碼,中文使用的是utf-8編碼,因為編碼方式的不同。所以在cocos2d-x中直接使
用中文會出現亂碼,而xml使用的也是utf-8編碼。所以使用xml能夠實如今cocos2d-x中實現顯示中文
理論上的東西就不說了,說多了反而會聽不明確,以下通過一些例項介紹xml在cocos2d-x中的應用
程式例項1:使用ccuserdefault讀取xml中的資訊
實現過程:
1、建立乙個xml檔案
2、將最高分寫入xml檔案裡
3、讀取xml檔案裡的最高分
xml檔案的建立**:
//將遊戲的最高分儲存到記憶體中
ccuserdefault::shareduserdefault()->setintegerforkey("highscore", 7000);
//將遊戲的最高分資訊寫到硬碟中
ccuserdefault::shareduserdefault()->flush();
編譯成功後會在debug資料夾下生成乙個名稱為userdefault.xml的xml檔案
userdefault.xml中的**:userdefault.xml中有乙個最高分
<?xml version="1.0" encoding="utf-8"?>
-7000
讀取userdefault.xml中的最高分
//讀取遊戲的最高分。當沒有讀取到時返回0
int highscore = ccuserdefault::shareduserdefault()->getintegerforkey("highscore", 0);
//列印最高分
cclog("highscore=%d", highscore);
執行結果:
程式例項2:使用plist格式的xml檔案儲存使用者資訊,而且讀取使用者資訊1
實現過程:
新建乙個格式為plist的xml檔案,檔案裡的內容例如以下
xml version="1.0" encoding="utf-8"?
張三丰age36
在程式中加入**
//建立乙個字典類。用於讀取plist格式的xml檔案
ccdictionary* dict = ccdictionary::createwithcontentsoffile("aaa.plist");
//從aaa.plist中讀取name的資訊
const ccstring* name = dict->valueforkey("name");
//從aaa.plist中讀取age的資訊
const ccstring* age = dict->valueforkey("age");
//列印這兩個資訊
cclog("name is %s, age is %d", name->getcstring(), age->intvalue());
執行結果:
程式例項3:使用plist格式的xml檔案儲存使用者資訊。而且讀取使用者資訊2
實現過程:
新建乙個格式為plist的xml檔案,檔案裡的內容例如以下
張三丰
age36
family
sonname
***age
6 daughter
name
yyyage3
在程式中加入以下的**:
//建立乙個字典類。用於讀取plist格式的xml檔案
ccdictionary* dict = ccdictionary::createwithcontentsoffile("aaa.plist");
//從aaa.plist中讀取name的資訊
const ccstring* name = dict->valueforkey("name");
//從aaa.plist中讀取age的資訊
const ccstring* age = dict->valueforkey("age");
//列印這兩個資訊
cclog("name is %s, age is %d", name->getcstring(), age->intvalue());
//從aaa.plist中讀取family的資訊
ccobject* ofamily = dict->objectforkey("family");
ccdictionary* dictfamily = (ccdictionary*)ofamily;
//在字典中查詢son的資訊
ccdictionary* dictson = (ccdictionary*)dictfamily->objectforkey("son");
//得到son的名字
name = dictson->valueforkey("name");
//得到son的年齡
age = dictson->valueforkey("age");
//列印son的資訊
cclog("the name of son is %s, the age of son is %d", name->getcstring(), age->intvalue());
//在字典中查詢daughter的資訊
ccdictionary* dictdaughter = (ccdictionary*)dictfamily->objectforkey("daughter");
//查詢daughter的名字
name = dictdaughter->valueforkey("name");
//查詢daughter的年齡
age = dictdaughter->valueforkey("age");
//列印daughter的資訊
cclog("the name of daughter is %s, the age of daughter is %d", name->getcstring(), age->intvalue());
執行結果:
程式例項4:建立乙個xml檔案解析器
實現**:
#include "t40xml_tinyxml.h"
ccscene* t40xml_tinyxml::scene()
void t40xml_tinyxml::walkover(tinyxml2::xmlelement* node)
else
walkover(curnode);
curnode = curnode->nextsiblingelement(); }}
bool t40xml_tinyxml::init()
執行結果:
怎樣在Cocos2d x中使用Lua指令碼
筆者使用的是cocos2d x的2.21版本號。xcode 5.0開發環境,同一時候也建議大家使用cocos2.20以上版本號,若由於版本號原因源 無法執行,可將classes檔案拷貝出來,在新建的專案中將classes目錄替換進去。lua檔案在resources目錄中。有關lua指令碼語言的基本語...
SneakInput在cocos2d x下的示例
看了很多教程和文件,無論2d還是2d x都推薦使用開源的sneakinput作為其觸屏的手柄元件。我的環境為vs2010 cocos2d 1.0.1 x 0.12.0 經過自己的試驗,發現在我的環境下並不需要修改sneakinput的原始碼,將原始碼解壓後,放在自己的專案裡就可以正常使用。sneak...
Flash中匯出在Cocos2d x中使用的精靈表
1.開啟fla檔案,在庫中選擇要匯出精靈表的元件,右鍵 生成sprite表 2.選擇資料格式為cocos2d v2 3.匯出檔案如下 plist檔案 匯出的檔案可在程式裡面直接使用,但有個問題,可以看到plist檔案中動畫幀的key是以 元件名稱 序號 前面補0 組成的,如果這樣直接在程式裡面使用的...