Cocos数据篇[3.4](4) ――plist文件操作

前端之家收集整理的这篇文章主要介绍了Cocos数据篇[3.4](4) ――plist文件操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

【唠叨】

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

例如:小图打包成大图的纹理图片、制作粒子特效、帧动画等,都用到了plist文件作为配置文件

本节要介绍的是:如何创建plist文件,以及读取plist文件中的数据信息。


【扩展阅读】

http://zh.wikipedia.org/wiki/Plist(维基百科)

http://zengrong.net/post/1981.htm(COCOS2D-X中的PLIST文件格式详解)

http://cn.cocos2d-x.org/tutorial/show?id=2117(Spritesheet的plist文件格式解析)




【plist文件

属性列表Property List文件是一种用来存储序列化后的对象的文件

属性列表文件文件扩展名为 .plist,因此通常被称为plist文件


1、plist文件在Cocos中的应用

(1)图片纹理的配置信息

将多个纹理小图片打包成一个大图片,并生成plist文件。用于配置各个小图的名称、尺寸大小、以及在大图中的所在的矩形区域位置等信息。

可以使用TexturePacker工具,将多个小碎图的纹理打包成一张大图片

(2)帧动画的配置信息

将帧动画的数据信息,生成为plist配置文件。包含每帧间隔、动画重复次数、每一帧所需的图片、每张图片名称、尺寸大小、以及在大图中所在的矩形区域位置等信息。

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

将粒子特效的数据信息,生成为plist配置文件。包含粒子发射器的位置信息、发射器模式、最大粒子数量、发射角度、发射速度、纹理贴图等等信息。

(4)还有其它。


2、plist文件格式

plist文件属性列表文件类似于键值对(key-value)的形式。

plist文件举例:

  1. //
  2. <?xmlversion="1.0"encoding="UTF-8"?>
  3. <!DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  4. <plistversion="1.0">
  5. <dict>
  6. <key>dict</key>
  7. <dict>
  8. <key>name</key>
  9. <string>Alice</string>
  10. <key>age</key>
  11. <string>20</string>
  12. </dict>
  13. <key>array</key>
  14. <array>
  15. <integer>0</integer>
  16. <integer>1</integer>
  17. <integer>2</integer>
  18. </array>
  19. <key>bool</key>
  20. <true/>
  21. <key>data</key>
  22. <data></data>
  23. <key>date</key>
  24. <date>2015-02-16T16:47:11Z</date>
  25. <key>number</key>
  26. <integer>123456</integer>
  27. <key>string</key>
  28. <string>helloworld!</string>
  29. </dict>
  30. </plist>
  31. //

属性类型有:

> Dictionary :字典。(子属性列表为:键值对形式)

> Array :数组。(子属性列表为:数组值的形式)

> Boolean :逻辑值。(true / false)

> Number :数字。

> String :字符串。

> Date :日期。

> Data :数据。

其中,根节点只能为字典或数组。

并且在字典或数组中,键对应的值依然可以为以上的各个属性类型。


3、创建/编辑plist文件

在Mac OS系统中,XCode可以直接创建和编辑plist文件

当然也可以使用plist编辑软件,或直接使用文本编辑器进行编写。

XCode中,编辑plist文件非常方便。

其中,根节点Root,只能为Dictionary、或Array类型。

wKiom1TiMoLiwX2QAAETD6stsBk455.jpg

以上plist文件数据,代码形式如下:

  1. //
  2. <?xmlversion="1.0"encoding="UTF-8"?>
  3. <!DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  4. <plistversion="1.0">
  5. <dict>
  6. <key>dict</key>
  7. <dict>
  8. <key>name</key>
  9. <string>Alice</string>
  10. <key>age</key>
  11. <string>20</string>
  12. </dict>
  13. <key>array</key>
  14. <array>
  15. <integer>0</integer>
  16. <integer>1</integer>
  17. <integer>2</integer>
  18. </array>
  19. <key>bool</key>
  20. <true/>
  21. <key>data</key>
  22. <data></data>
  23. <key>date</key>
  24. <date>2015-02-16T16:47:11Z</date>
  25. <key>number</key>
  26. <integer>123456</integer>
  27. <key>string</key>
  28. <string>helloworld!</string>
  29. </dict>
  30. </plist>
  31. //

我想大家应该能读得懂把。


4、读取plist文件

接下来讲讲如何读取plist文件的数据信息。

(1)根节点为Dictionary :使用FileUtils::getInstance()->getValueMapFromFile(); 读取为一个ValueMap

(2)根节点为Array :使用FileUtils::getInstance()->getValueVectorFromFile(); 读取为一个ValueVector

使用举例:

  1. //
  2. //文件路径
  3. std::stringpath="/soft/cocos2d-x-3.4/projects/Demo34/Resources/testPlist.plist";
  4.  
  5. //读取plist文件
  6. //以根节点为字典Dictionary为例
  7. //根节点为字典Dictionary,读取为一个ValueMap
  8. ValueMapplist=FileUtils::getInstance()->getValueMapFromFile(path);
  9.  
  10. //若根节点为数组Array,读取为一个ValueVector
  11. //ValueVectorplist=FileUtils::getInstance()->getValueVectorFromFile(path);
  12.  
  13.  
  14. //获取数据
  15. //读取"string"
  16. CCLOG("string=%s",(plist["string"].asString()).c_str());
  17.  
  18. //读取"dict",也是一个字典ValueMap
  19. ValueMap&dict=plist["dict"].asValueMap();
  20. CCLOG("name=%s",(dict["name"].asString()).c_str());
  21. CCLOG("age=%s",(dict["age"].asString()).c_str());
  22.  
  23. //读取"array",是一个数组ValueVector
  24. ValueVector&array=plist["array"].asValueVector();
  25. for(inti=0;i<array.size();i++){
  26. Value&value=array[i];
  27. CCLOG("%d",value.asInt());
  28. }
  29. //

猜你在找的Cocos2d-x相关文章