cocos2d x 讀取 plist檔案

2021-06-29 05:53:05 字數 2735 閱讀 6605

**:

在cocos2d-x中可以用.plist格式的檔案來儲存資料,它是xml檔案格式的一種,在cocos2d-x解析.plist方面相關的資料比較少,但本身也很簡單,要解析.plist檔案可以參考cocos2d-x類庫中的ccspriteframecache類和ccparticlesystem類,它主要是使用ccdictionary類來對.plist檔案進行操作。

下面有乙個.plist檔案:

xml version="1.0" encoding="utf-8"

?>

>

<

plist

version

="1.0"

>

<

dict

>

<

key>level1

key>

<

dict

>

<

key>bg_far_scene

key>

<

dict

>

<

key>path

key>

<

string

>images/far_scene.png

string

>

<

key>pos

key>

<

string

>

string

>

dict

>

<

key>bg_near_scene

key>

<

dict

>

<

key>path

key>

<

string

>images/near_scene.png

string

>

<

key>pos

key>

<

string

>

string

>

dict

>

dict

>

dict

>

plist

>

讀取.plist檔案的**如下:

const

char* testplistpath = "

bsplistdatas\\test.plist";

const

char* fullpath = ccfileutils::sharedfileutils()->fullpathfromrelativefile("

test.plist

", testplistpath);

ccdictionary* plistdic =ccdictionary::createwithcontentsoffile(testplistpath);

ccdictionary* leveldic = dynamic_cast(plistdic->objectforkey("

level1

"));

ccdictionary* farscene = dynamic_cast(leveldic->objectforkey("

bg_far_scene

"));

ccstring* farscenepath = dynamic_cast(farscene->objectforkey("

path

"));

ccpoint point = ccpointfromstring(farscene->valueforkey("

pos")->getcstring());

cclog(

"path = %s

", farscenepath->getcstring());

cclog(

"pos = %f, %f

", point.x, point.y);

第一行是.plist檔案的相對路徑,通過ccfileutils類獲得檔案中絕對路徑後,使用ccdictionary::createwithcontensoffile(filepath);檔案中內容載入到ccdictionary資料結構的記憶體中,然後通過***forkey獲得相應的key下的value。

這裡需要注意的是,當在讀取'pos'的時候,它的值乙個的字串,這是.plist檔案中的陣列儲存規則,我們可以通過cocos2d-x提供函式api將這樣的字串轉化為ccpoint物件。

ccpoint point = ccpointfromstring(farscene->valueforkey("

pos")->getcstring());

上面這句話就是做了這樣的乙個轉化的過程,同樣的cocos2d-x還支援ccsize、ccrect的字串的轉化。他們轉化的方法以及在.plist中對應的字串格式如下:

ccpoint: ccpointfromstring();

ccsize:  ccsizefromstring();

ccrect: ccsizefromstring();

這樣我們2d遊戲所初始化所需要的資料都基本上夠用了,可以嘗試將遊戲的初始資料放在.plist中,然後修改調整數值就可以直接修改plist檔案,而無需重新編譯程式了,從而實現遊戲資料和遊戲邏輯的分離。

在cocos2dx中解析plist檔案

先儲存,備用 plist檔案實際上就是xml檔案,預設情況下,我用texturepacker生成的紋理中會對應乙個plist檔案,通過plist檔案的資訊,可以知道紋理中各個小的位置和大小。我生成的plist檔案如下圖 cocos2dx對解析這類的檔案提供了不錯的支援 plistutil.h ifn...

收集 cocos2dx中載入使用plist檔案

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 貼背景 讀取粒子效果 particlesystem m emitter1 particlesystemquad create snow.plist m emitter1 retain particlebatchnod...

Cocos2d x讀取本地檔案

在公司在專案開發的時候需要讀取本地的檔案,於是在網上搜尋了一下以下關於cocos2d x檔案讀取的操作,用了兩種方法都可以實現,一種是使用c 另種是cocos2d x 如下 讀取檔案 引數分別為檔名和文字框 void gameregistry readfile const char pfilenam...