中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Cocos中的plist文件操作

發布時間:2021-11-26 14:11:16 來源:億速云 閱讀:1149 作者:柒染 欄目:開發技術

這篇文章將為大家詳細講解有關如何進行Cocos中的plist文件操作,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

【嘮叨】

    在Cocos中,plist文件 是非常常見的配置文件。它是特定格式的xml文件。

    例如:小圖打包成大圖的紋理圖片、制作粒子特效、幀動畫等,都用到了plist文件作為配置文件。

    如何創建plist文件,以及讀取plist文件中的數據信息。    


【plist文件】

    屬性列表Property List)文件是一種用來存儲序列化后的對象的文件

    屬性列表文件的文件擴展名為 .plist,因此通常被稱為plist文件。

1、plist文件在Cocos中的應用

    (1)圖片紋理的配置信息

        將多個紋理小圖片打包成一個大圖片,并生成plist文件。用于配置各個小圖的名稱、尺寸大小、以及在大圖中的所在的矩形區域位置等信息。

        可以使用TexturePacker工具,將多個小碎圖的紋理打包成一張大圖片。

    (2)幀動畫的配置信息

        將幀動畫的數據信息,生成為plist配置文件。包含每幀間隔、動畫重復次數、每一幀所需的圖片、每張圖片的名稱、尺寸大小、以及在大圖中所在的矩形區域位置等信息。

    (3)粒子特效的配置信息

        將粒子特效的數據信息,生成為plist配置文件。包含粒子發射器的位置信息、發射器模式、最大粒子數量、發射角度、發射速度、紋理貼圖等等信息。

    (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         :數組。(子屬性列表為:數組值的形式)

        > Boolean    :邏輯值。(true / false)

        > Number    :數字。

        > String       :字符串。

        > Date          :日期。

        > Data          :數據。

    其中,根節點只能為字典或數組。

    并且在字典或數組中,鍵對應的值依然可以為以上的各個屬性類型。

3、創建/編輯plist文件

    在Mac OS系統中,XCode可以直接創建和編輯plist文件。

    當然也可以使用plist編輯軟件,或直接使用文本編輯器進行編寫。

    XCode中,編輯plist文件非常方便。

    其中,根節點Root,只能為Dictionary、或Array類型。

如何進行Cocos中的plist文件操作

    以上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>
//

    我想大家應該能讀得懂把。

4、讀取plist文件

    接下來講講如何讀取plist文件的數據信息。

    (1)根節點為Dictionary :使用 FileUtils::getInstance()->getValueMapFromFile(); 讀取為一個ValueMap

    (2)根節點為Array          :使用 FileUtils::getInstance()->getValueVectorFromFile(); 讀取為一個ValueVector

    使用舉例:

//
// 文件路徑
	std::string path = "/soft/cocos2d-x-3.4/projects/Demo34/Resources/testPlist.plist";

// 讀取plist文件
// 以根節點為字典Dictionary為例
	// 根節點為字典Dictionary , 讀取為一個ValueMap
	ValueMap plist = FileUtils::getInstance()->getValueMapFromFile(path);

	// 若根節點為數組Array , 讀取為一個ValueVector
	// ValueVector plist = FileUtils::getInstance()->getValueVectorFromFile(path);


// 獲取數據
	// 讀取 "string"
	CCLOG("string = %s", (plist["string"].asString()).c_str());

	// 讀取 "dict" , 也是一個字典ValueMap
	ValueMap& dict = plist["dict"].asValueMap();
	CCLOG("name = %s", (dict["name"].asString()).c_str());
	CCLOG("age  = %s", (dict["age"].asString()).c_str());

	// 讀取 "array" , 是一個數組ValueVector
	ValueVector& array = plist["array"].asValueVector();
	for (int i = 0; i < array.size(); i++) {
		Value& value = array[i];
		CCLOG("%d", value.asInt());
	}
//

關于如何進行Cocos中的plist文件操作就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普格县| 元朗区| 临武县| 朝阳县| 肥东县| 历史| 贵州省| 陆川县| 锡林郭勒盟| 武安市| 达日县| 丹阳市| 彰化市| 潢川县| 会泽县| 普安县| 东乌珠穆沁旗| 双城市| 麦盖提县| 府谷县| 花莲县| 新河县| 汾西县| 塔河县| 武乡县| 六盘水市| 乌鲁木齐市| 时尚| 团风县| 大安市| 睢宁县| 朝阳市| 建德市| 秦安县| 城口县| 虎林市| 昌都县| 芜湖市| 乐山市| 海安县| 监利县|