在Cocos2d X中使用xml

2021-09-07 13:50:12 字數 3914 閱讀 9039

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 組成的,如果這樣直接在程式裡面使用的...