cocos2d-x中使用plist文件总结
来自:csdn qqTuBo
原文:
cocos2d-x 读取plist文件
最近在学cocos,有很多不错的游戏都是用cocos实现的,其实貌似捕鱼达人4月份流水账有3500W,好奇之下,看了看下捕鱼达人里的一些资源,顺便试着学习下plist的用法。
(接下来用到的资源都在捕鱼达人的APK内,直接解压了就能看到。)
我挑了FishActor-Small_hv.plist和它对应的png来看看下。
FishActor-Small_hv.plist内部的格式是这样的
<dict>
<key>frames</key>
<dict>
<key>btn_music.png</key>
<dict>
<key>frame</key>
<string>{{1, 46}, {31, 16}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0, 0}, {31, 16}}</string>
<key>sourceSize</key>
<string>{31, 16}</string>
</dict>
</dict></dict>
结构是这样的:
文件名
frames
图片名
frame
可以通过这样获取object
CCRect PlistUtils::getRectFromPlist(const char* fileName,const char* key1,const char* key2,const char* key3){
CCDictionary* pDictionary=(CCDictionary*)CCDictionary::createWithContentsOfFile(fileName);
CCDictionary* content1=(CCDictionary*)pDictionary->objectForKey(key1);
CCDictionary* content2=(CCDictionary*)content1->objectForKey(key2);
CCString* object=(CCString*)content2->objectForKey(key3);
}
这样就能获取到需要的对象。接下来添加一个开始游戏的menu。首先对HelloWorld改造下,先在init里加入背景
CCSprite* background=CCSprite::create("ui_background_normal_hv.png");
background->setAnchorPoint(CCPointZero);
background->setPosition(CCPointZero);
addChild(background,0);
再加入开始游戏的按钮,开始游戏的贴图是通过,开始游戏的贴图在UI_GameMenuText_cn_hv.png和UI_GameMenuText_cn_hv.plist内首先获取开始游戏的CCRect
CCTexture2D* menusCache=CCTextureCache::sharedTextureCache()->addImage("UI_GameMenuText_cn_hv.png");
CCRect startRect=PlistUtils::getRectFromPlist("UI_GameMenuText_cn_hv.plist","frames","ui_2p_010.png","frame");
CCSprite* startSprite=CCSprite::createWithTexture(menusCache,startRect);
CCMenuItemSprite* pStartMenu=CCMenuItemSprite::create(startSprite,startSprite,this,menu_selector(GameMenuScence::menuStartCallback));
pStartMenu->setAnchorPoint(ccp(0.5f,0.5f));
pStartMenu->setPosition(ccp(size.width/2,size.height/2));
CCMenu* pMenus=CCMenu::create(pStartMenu,NULL);
pStartMenu->setPosition(CCPointZero);
addChild(pMenus,2);
效果图如下
http://download.csdn.net/detail/qqtubo/5557369
来自:蓝色記憶
原文:
cocos2d-x 2.1 -- 读取.plist文件
在cocos2d-x中可以用.plist格式的文件来保存数据,它是XML文件格式的一种,在cocos2d-x解析.plist方面相关的资料比较少,但本身也很简单,要解析.plist文件可以参考cocos2d-x类库中的CCSpriteFrameCache类和CCParticleSystem类,它主要是使用CCDictionary类来对.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>level1</key>
<dict>
<key>bg_far_scene</key>
<dict>
<key>path</key>
<string>images/far_scene.png</string>
<key>pos</key>
<string>{358, 309}</string>
</dict>
<key>bg_near_scene</key>
<dict>
<key>path</key>
<string>images/near_scene.png</string>
<key>pos</key>
<string>{360, 100}</string>
</dict>
</dict>
</dict>
</plist>
读取.plist文件的代码如下:
const char* testPlistPath = "BSPlistDatas\\test.plist";
const char* fullPath = CCFileUtils::sharedFileUtils()->fullPathFromRelativeFile("test.plist", testPlistPath);
CCDictionary* plistDic = CCDictionary::createWithContentsOfFile(testPlistPath);
CCDictionary* levelDic = dynamic_cast<CCDictionary*>(plistDic->objectForKey("level1"));
CCDictionary* farScene = dynamic_cast<CCDictionary*>(levelDic->objectForKey("bg_far_scene"));
CCString* farScenePath = dynamic_cast<CCString*>(farScene->objectForKey("path"));
CCPoint point = CCPointFromString(farScene->valueForKey("pos")->getCString());
CCLog("path = %s", farScenePath->getCString());
CCLog("pos = %f, %f", point.x, point.y);
第一行是.plist文件的相对路径,通过CCFileUtils类获得文件中绝对路径后,使用CCDictionary::createWithContensOfFile(filePath);将文件中内容加载到CCDictionary数据结构的内存中,然后通过xxxForKey获得相应的key下的value。
这里需要注意的是,当在读取'pos'的时候,它的值一个{x, y}的字符串,这是.plist文件中的数组存储规则,我们可以通过cocos2d-x提供函数api将这样的字符串转化为CCpoint对象。
CCPoint point = CCPointFromString(farScene->valueForKey("pos")->getCString());
上面这句话就是做了这样的一个转化的过程,同样的cocos2d-x还支持CCSize、CCRect的字符串的转化。他们转化的方法以及在.plist中对应的字符串格式如下:
CCPoint: CCPointFromString(); {x, y}
CCSize: CCSizeFromString(); {w, h}
CCRect: CCSizeFromString(); {x, y, w, h}
这样我们2D游戏所初始化所需要的数据都基本上够用了,可以尝试将游戏的初始数据放在.plist中,然后修改调整数值就可以直接修改plist文件,而无需重新编译程序了,从而实现游戏数据和游戏逻辑的分离。
cocos2d-x中使用plist文件总结相关推荐
- MCR3516与MCR3512读写器在麒麟系统中info.plist文件冲突解决方案
MCR3516与MCR3512读写器支持sim读卡器支持麒麟系统下运行,提供相关SDK开发包及代码案例,SDK文件中info.plist可能存在其他厂商提供的外设冲突了.本文将结合实际用于,提供MCR ...
- cocos2d 使用TexturePacker制作plist文件
转自:https://blog.csdn.net/chiyiw/article/details/38170573 上一篇提到plist文件在cocos2d中的使用,那么如何制作plist文件呢? 一. ...
- Xcode中Info.plist文件各个键的作用说明【搜藏】
Localiztion native development region --- CFBundleDevelopmentRegion 本地化相关,如果⽤户所在地没有相应的语言资源,则用这个key的v ...
- 把txt文件中的json字符串写到plist文件中
- (void)json2Plist {NSString *filePath = [self applicationDocumentsDirectoryFileName:@"json&quo ...
- iPhone读取plist文件
2019独角兽企业重金招聘Python工程师标准>>> 在xcode中读取plist文件非茶得简单: 读取一个名为recipes.plist的文件: // 变量定义 NSArray* ...
- Plist文件的创建与读写
Plist文件(属性列表·Property List)是一种轻量级的存储文件,是使用XML格式以键值对方式进行存储的列表,通常用于用户设置或一些简单的数据存储. Plist文件的创建方式有两种:①Xc ...
- Cocos数据篇[3.4](4) ——plist文件操作
[唠叨] 在Cocos中,plist文件 是非常常见的配置文件.它是特定格式的xml文件. 例如:小图打包成大图的纹理图片.制作粒子特效.帧动画等,都用到了plist文件作为配置文件. 本节要介绍的是 ...
- iOS 打包.framework(包括第三方、图片、xib、plist文件)详细步骤及需要注意的地方...
https://www.cnblogs.com/yk123/p/9340268.html // 加载自定义名称为Resources.bundle中对应images文件夹中的图片 // 思路:从main ...
- IOS之plist文件
一.什么是plist文件: plist文件:Property List文件的简称,用于存放数组或者字典等的文本文件.IOS经常使用其存放用户信息,app信息等,如:info.plist文件. 二.pl ...
最新文章
- bootstrap 获取表格修改的结果_bootstrap-table前端修改后台传来的数据重新进行渲染...
- crontab 运行pyhon脚本
- android handler.removeCallbacksAndMessages(null)的使用
- ORACLE 限制特定IP访问数据库 访问白名单
- nodejs连接redis,redis服务器的地址格式应该怎么写
- eclipse配置代码提示
- mysql 自动 分库 备份_MySQL分库备份的方法
- Linux截图工具import使用说明
- 关于a+b共创建了几个对象的问题
- Advanced Installer 历史版本下载
- Django 实现用户认证set_Cookie
- 在Eclipse里自动导入相应包的类名的快捷键
- 计算机应用基础146jpg,计算机应用基础——复习题2.pdf
- 服务器安装julia_julia | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror...
- S32K144之芯片锁死解锁——关闭debug端口
- 解忧杂货铺----读后感
- 【已解决】Nginx基于多端口、多域名配置
- 虚幻4地形怎么增加层_腾讯首款虚幻4沙盘战略手游上线:全面3D化
- 在美国纽约哪里有西联汇款?本文提供美国纽约法拉盛西联汇款网点代理地址
- 【经理人领导力突破训练营】经理人必修课,如何成为成功的经理人?
热门文章
- 网络安全管理的“模拟人生”
- 阿里星专访丨星罡:因为期待,你需要更出色!
- 【VS Code配置matlab】手把手教学,matlab也能自动补全+瞬间启动+代码整理!
- Android自动化测试01-环境安装连接问题及解决
- PHP 对象 多态性
- c语言求行列式的值原理,新手作品:行列式计算C语言版
- 轨迹分析_解析几何中的轨迹问题中经典问题,有详细分析及其解答
- ISE_FIFO_IP核接口测试(二)
- java 获取密码框密码,获得Windows下的密码框密码--编程学习网
- MongoDB副本集学习(一):概述和环境搭建