【唠叨】

在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文件举例:

//
<?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类型。

以上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 , 读取为一个ValueMapValueMap plist = FileUtils::getInstance()->getValueMapFromFile(path);// 若根节点为数组Array , 读取为一个ValueVector// ValueVector plist = FileUtils::getInstance()->getValueVectorFromFile(path);// 获取数据// 读取 "string"CCLOG("string = %s", (plist["string"].asString()).c_str());// 读取 "dict" , 也是一个字典ValueMapValueMap& dict = plist["dict"].asValueMap();CCLOG("name = %s", (dict["name"].asString()).c_str());CCLOG("age  = %s", (dict["age"].asString()).c_str());// 读取 "array" , 是一个数组ValueVectorValueVector& array = plist["array"].asValueVector();for (int i = 0; i < array.size(); i++) {Value& value = array[i];CCLOG("%d", value.asInt());}
//

转载于:https://blog.51cto.com/shahdza/1614716

Cocos数据篇[3.4](4) ——plist文件操作相关推荐

  1. 【Unity3D读取数据】(四)Excel文件操作(创建、读取、写入、修改)

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  2. 【Unity3D读取数据】(二)Json文件操作(创建、读取、解析、修改)

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  3. Cocos2d-x数据模块教程04:plist文件操作

    我们知道在Cocos2d-x中,plist文件是非常常见的配置文件.它是特定格式的xml文件.例如:小图打包成大图的纹理图片.制作粒子特效.帧动画等,都用到了plist文件作为配置文件.所以,在这一章 ...

  4. python中二进制文件_Python学习基础篇 -6: Python中的文件操作

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 . 文件有有什么用 文件可以看作一个仓库 ...

  5. python中文件操作中不同的文件操作有何差异_Python学习基础篇 -6: Python中的文件操作...

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 .文件有有什么用 文件可以看作一个仓库, ...

  6. 看了这篇,你也是Python文件操作高手

    Python文件操作 文本文件和二进制文件 文件操作相关模块概述 创建文件对象 open() 文本文件的写入 基本的文件写入操作 常用编码介绍 ASCII ISO8859-1 GB2312,GBK,G ...

  7. Python学习【第6篇】:Python之文件操作

    python----------文件操作 一.文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 r模式,默认模式,文件不存在则报错 w模式,文件不存在 ...

  8. plist文件读写,序列化与反序列化,文件的读写[xcode4.4.1]

    这篇学习目标: plist文件读写 对象序列化与反序列化 本地文件的读写 iCloud存储的API 引言 在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名是:Prop ...

  9. Plist文件的创建与读写

    Plist文件(属性列表·Property List)是一种轻量级的存储文件,是使用XML格式以键值对方式进行存储的列表,通常用于用户设置或一些简单的数据存储. Plist文件的创建方式有两种:①Xc ...

最新文章

  1. OpenCV自适应阈值化函数adaptiveThreshold详解,并附实例源码
  2. VC2008 忽然无法调试DLL的解决方法
  3. socket Php 粘包,python3 tcp的粘包现象和解决办法解析
  4. Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态
  5. 控制台 - 网络管理之华为交换机 S系列端口限速
  6. 利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)
  7. JMX:一些入门说明
  8. 案例分享,从0到1了解一个完整项目
  9. 大于3小于4的整数bleem_[电影点评]3和4之间还有整数吗?疯子数学家发现,只要证明出来就能穿越今天为大家带来一部只要证明3和4之间还有一个整数就能穿越时空的科幻悬疑片《隐匿的数字》 故...
  10. JavaScript数组方法map
  11. 论文阅读:Semantic Human Matting
  12. CentOS7开机自动加载驱动方法
  13. 微信小程序登录界面的代码html,微信小程序用户登录组件
  14. java斐波黄金分割_斐波那契(黄金分割)
  15. Crust Network 与京湘豫等地区块链名企、投资人考察广西区块链科创园
  16. pythonstdin_理解Python中的stdin stdout stderr - The Hard Way Is Easier
  17. 【OBS】OBS Studio 的安装、参数设置和录屏、摄像头使用教程
  18. Web 3.0让网络巨头们恐慌?Dapp爆发潮的到来会更让人颤抖!
  19. Linux C 函数参考(日期时间)
  20. opencv 图像的变换

热门文章

  1. wxpython制作表格界面_wxpython入门第二步(布局)
  2. python3字典平均值_python3基础之字典
  3. react前端显示图片_在react里怎么引用图片
  4. 容器可以作为全局变量吗_四季青是风水树吗?哪些可以作为风水树?
  5. 最小二乘多项式拟合程序matlab,最小二乘法的多项式拟合(matlab实现)
  6. oracle 怎么读取模板,获取、部署和管理Oracle VM模板
  7. oracle 容器切换,oracle12c 多租户管理四(容器连接切换)
  8. mysql点击execute_MySQL execute、executeUpdate、executeQuery三者的区别
  9. linux 切图软件下载,学会23个linux常用命令,不做前端切图仔~
  10. JAVASE内测试题