您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行Cocos中的plist文件操作,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。
【嘮叨】
在Cocos中,plist文件 是非常常見的配置文件。它是特定格式的xml文件。
例如:小圖打包成大圖的紋理圖片、制作粒子特效、幀動(dòng)畫等,都用到了plist文件作為配置文件。
如何創(chuàng)建plist文件,以及讀取plist文件中的數(shù)據(jù)信息。
【plist文件】
屬性列表(Property List)文件是一種用來存儲(chǔ)序列化后的對象的文件。
屬性列表文件的文件擴(kuò)展名為 .plist,因此通常被稱為plist文件。
1、plist文件在Cocos中的應(yīng)用
(1)圖片紋理的配置信息
將多個(gè)紋理小圖片打包成一個(gè)大圖片,并生成plist文件。用于配置各個(gè)小圖的名稱、尺寸大小、以及在大圖中的所在的矩形區(qū)域位置等信息。
可以使用TexturePacker工具,將多個(gè)小碎圖的紋理打包成一張大圖片。
(2)幀動(dòng)畫的配置信息
將幀動(dòng)畫的數(shù)據(jù)信息,生成為plist配置文件。包含每幀間隔、動(dòng)畫重復(fù)次數(shù)、每一幀所需的圖片、每張圖片的名稱、尺寸大小、以及在大圖中所在的矩形區(qū)域位置等信息。
(3)粒子特效的配置信息
將粒子特效的數(shù)據(jù)信息,生成為plist配置文件。包含粒子發(fā)射器的位置信息、發(fā)射器模式、最大粒子數(shù)量、發(fā)射角度、發(fā)射速度、紋理貼圖等等信息。
(4)還有其它。
2、plist文件格式
plist文件為屬性列表文件,類似于鍵值對(key-value)的形式。
plist文件舉例:
// <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>dict</key> <dict> <key>name</key> <string>Alice</string> <key>age</key> <string>20</string> </dict> <key>array</key> <array> <integer>0</integer> <integer>1</integer> <integer>2</integer> </array> <key>bool</key> <true/> <key>data</key> <data></data> <key>date</key> <date>2015-02-16T16:47:11Z</date> <key>number</key> <integer>123456</integer> <key>string</key> <string>hello world!</string> </dict> </plist> //
屬性類型有:
> Dictionary :字典。(子屬性列表為:鍵值對形式)
> Array :數(shù)組。(子屬性列表為:數(shù)組值的形式)
> Boolean :邏輯值。(true / false)
> Number :數(shù)字。
> String :字符串。
> Date :日期。
> Data :數(shù)據(jù)。
其中,根節(jié)點(diǎn)只能為字典或數(shù)組。
并且在字典或數(shù)組中,鍵對應(yīng)的值依然可以為以上的各個(gè)屬性類型。
3、創(chuàng)建/編輯plist文件
在Mac OS系統(tǒng)中,XCode可以直接創(chuàng)建和編輯plist文件。
當(dāng)然也可以使用plist編輯軟件,或直接使用文本編輯器進(jìn)行編寫。
XCode中,編輯plist文件非常方便。
其中,根節(jié)點(diǎn)Root,只能為Dictionary、或Array類型。
以上plist文件數(shù)據(jù),代碼形式如下:
// <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>dict</key> <dict> <key>name</key> <string>Alice</string> <key>age</key> <string>20</string> </dict> <key>array</key> <array> <integer>0</integer> <integer>1</integer> <integer>2</integer> </array> <key>bool</key> <true/> <key>data</key> <data></data> <key>date</key> <date>2015-02-16T16:47:11Z</date> <key>number</key> <integer>123456</integer> <key>string</key> <string>hello world!</string> </dict> </plist> //
我想大家應(yīng)該能讀得懂把。
4、讀取plist文件
接下來講講如何讀取plist文件的數(shù)據(jù)信息。
(1)根節(jié)點(diǎn)為Dictionary :使用 FileUtils::getInstance()->getValueMapFromFile(); 讀取為一個(gè)ValueMap 。
(2)根節(jié)點(diǎn)為Array :使用 FileUtils::getInstance()->getValueVectorFromFile(); 讀取為一個(gè)ValueVector 。
使用舉例:
// // 文件路徑 std::string path = "/soft/cocos2d-x-3.4/projects/Demo34/Resources/testPlist.plist"; // 讀取plist文件 // 以根節(jié)點(diǎn)為字典Dictionary為例 // 根節(jié)點(diǎn)為字典Dictionary , 讀取為一個(gè)ValueMap ValueMap plist = FileUtils::getInstance()->getValueMapFromFile(path); // 若根節(jié)點(diǎn)為數(shù)組Array , 讀取為一個(gè)ValueVector // ValueVector plist = FileUtils::getInstance()->getValueVectorFromFile(path); // 獲取數(shù)據(jù) // 讀取 "string" CCLOG("string = %s", (plist["string"].asString()).c_str()); // 讀取 "dict" , 也是一個(gè)字典ValueMap ValueMap& dict = plist["dict"].asValueMap(); CCLOG("name = %s", (dict["name"].asString()).c_str()); CCLOG("age = %s", (dict["age"].asString()).c_str()); // 讀取 "array" , 是一個(gè)數(shù)組ValueVector ValueVector& array = plist["array"].asValueVector(); for (int i = 0; i < array.size(); i++) { Value& value = array[i]; CCLOG("%d", value.asInt()); } //
關(guān)于如何進(jìn)行Cocos中的plist文件操作就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。