以下是壹個. plist文件:
& lt?xml版本="1.0 "編碼="UTF-8 "?& gt
& ltplist version="1.0 " >
& ltdict & gt
& ltkey & gtlevel 1 & lt;/key & gt;
& ltdict & gt
& ltkey & gtbg _遠_景& lt/key & gt;
& ltdict & gt
& ltkey & gt路徑& lt/key & gt;
& lt字符串& gtimages/far _ scene . png & lt;/string & gt;
& ltkey & gtpos & lt/key & gt;
& lt字符串& gt{358,309 } & lt/string & gt;
& lt/dict & gt;
& ltkey & gtbg _ near _ scene & lt/key & gt;
& ltdict & gt
& ltkey & gt路徑& lt/key & gt;
& lt字符串& gtimages/near _ scene . png & lt;/string & gt;
& ltkey & gtpos & lt/key & gt;
& lt字符串& gt{360,100 } & lt;/string & gt;
& lt/dict & gt;
& lt/dict & gt;
& lt/dict & gt;
& lt/plist & gt;
讀取的代碼。plist文件如下:
const char * testPlistPath = " BSPlistDatas \ \ test . plist ";
const char * full path = ccfile utils::shared file utils()-& gt;fullpath from relative file(" test . plist ",testPlistPath);
CCDictionary * plist DIC = CCDictionary::createwithcontentsofile(testPlistPath);
CCDictionary * level DIC = dynamic _ cast & lt;CCDictionary * & gt(plist DIC-& gt;objectForKey(" level 1 ");
CCDictionary * far scene = dynamic _ cast & lt;CCDictionary * & gt(level DIC->;objectForKey(" BG _ far _ scene ");
cc string * farScenePath = dynamic _ cast & lt;CCString * & gt(farScene-& gt;objectForKey(" path "));
cc point point = CCPointFromString(far scene-& gt;valueForKey(" pos ")-& gt;getCString());
CCLog("path = %s ",farScenePath-& gt;getCString());
CCLog("pos = %f,%f ",point.x,point . y);
第壹行是的相對路徑。plist文件。通過CCFileUtils類獲取文件中的絕對路徑後,使用ccdictionary:: create不帶內容文件(文件路徑);將文件的內容加載到CCDictionary數據結構的內存中,然後通過xxxForKey獲取相應鍵下的值。
這裏需要註意的是,在讀取' pos '時,它的值是壹個字符串{x,y},這是中的數組存儲規則。plist文件。我們可以通過Cocos2d-X提供的函數api將這樣的字符串轉換成CCpoint對象。
cc point point = CCPointFromString(far scene-& gt;valueForKey(" pos ")-& gt;getCString());
上面這句話就是這樣壹個轉換過程,同樣的cocos2d-x也支持CCSize和CCRect的字符串轉換。它們的轉換方法和。計劃如下:
cc point:CCPointFromString();{x,y}
CCSize:CCSizeFromString();{w,h}
cc rect:CCSizeFromString();{x,y,w,h}
這樣,初始化2D遊戲所需的所有數據基本上就足夠了。我們可以試著把遊戲的初始數據放進去。plist,然後修改調整值直接修改plist文件,不需要重新編譯程序,實現了遊戲數據和遊戲邏輯的分離。