cocos2dx下应用RapidXml作ConfigService遇到的问题
来源:互联网 发布:手机淘宝多图变大代码 编辑:程序博客网 时间:2024/04/26 03:14
背景:
希望在项目中增加一个ConfigService提供各种Object的配置。我们可以读取一个config节点,然后根据这个节点的config属性初始化合适的Object.
<?xml version="1.0" encoding="utf-8"?><Scenes> <Scene Name="PromiseLand" Level="1-1" ObjectLevel="1"> <Blocks RigidBlock="100"/> <Monster Mushroom1="50" Mushroom2="10"/> </Scene> <Scene Name="BoardLand" Level="1-2" ObjectLevel="1"> <Blocks RigidBlock1="50" RigidBlock2="100"/> <Monster Mushroom="100"/> </Scene></Scenes>
如在这个Scene.xml文件中我们可以配置出一个Scene所具有的一些要素, Block 的类型(RigidBlock1, RigidBlock2), Monster的类型,当然RigidBlock1、RigiBlock2等等出现的元素在对应的文件中(Block.xml, Monster.xml)也可以得到配置。
这样我们就可以较为自由的配置场景中出现的物体。
初步思路:
据说TinyXml的性能要落后于RapidXml30倍,于是初步决定采用RapidXml来实现这个功能。
如下RIgidBlock的工厂函数:
static RigidBlock* createRigidBlock(CCPoint point, CCSize size, void *parm);
将存储着Block配置xml_node<> * blockNode,作为第三个参数传入。
在Win32下用起来感觉不错。
遇到问题:
RapidXml在读取我们的xml文件时出现了错误,主要问题是rapidxml::file 在构造时使用了basic_ifstream,它必须传入一个真实的文件指针,而不是经过android平台从apk包中解析出来的虚拟的文件。
解决方法:
细节可以参考这个链接:http://codingnow.cn/cocos2d-x/939.html,这个文档中有几处显而易见的错误,修改一下就好了。
大题思路就是在启动游戏时将asset中保存的xml文件单独copy到一个真实的物理位置中,这个位置可以使用CCFileUtils::sharedFileUtils()->getWritablePath()来得到。
然后使用rapidxml加载这个真实路径上的xml文件就不会再报错了,加载的路径可以由CCFileUtils::sharedFileUtils()->getWritablePath() + fileName得到。
疑问:
需不需要对rapidXml进行一次封装,不然的话程序各处都保持着对rapidxml的引用,目前还没有出现什么重大问题,但是如果将来出现问题,修改这些引用会要了亲命。
明天先放下其他的工作,研究一下对rapidxml进行一层封装必要性和可行性。
附上github : https://github.com/xdnm/Jump
- cocos2dx下应用RapidXml作ConfigService遇到的问题
- c++使用rapidxml读取cocos2dx的配置文件
- configService
- Cocos2dx 3.3 遇到的问题
- RapidXML 导致的 crash 问题
- 新人学习opengl,记录下遇到的问题以作记录
- 遇到了 “遇到以零作除数错误” 的问题
- 关于cocos2dx嵌入到iOS应用中遇到触摸机制异常的问题
- cocos2dx 独立项目遇到的问题
- cocos2dx andriod平台遇到的问题总结
- cocos2dx遇到的问题 2.2.3版本
- cocos2dx学习中遇到的问题
- cocos2dx下离屏渲染遇到的问题
- cocos2dx 3.6版本 初学者遇到的问题
- cocos2dx 项目拷贝遇到的一些问题
- vs2015搭建cocos2dx遇到的问题
- rapidxml添加属性的内存分配问题
- RapidXML解析CDATA类型节点的问题
- 在Centos上安装与配置Tomcat
- Spring缓存简单介绍(Spring Cache)
- uva 10795 - A Different Task (递归+状态转移)
- SRM 622 D2L3: Subsets, math, backtrack
- python的诗歌实战项目
- cocos2dx下应用RapidXml作ConfigService遇到的问题
- html第六章格式化之css
- org.springframework.beans.factory.BeanCreationException
- EditText 的一些软键盘属性和回调
- 目标
- Linux安装Tomcat外部不能访问
- 使用Event Bus模式解耦Android App组件间通信
- 黑马程序员_内部类总结
- Android 从网络下载xml文件并进行解析