在cocos2d-x中可以用.pList格式的文件来保存数据,它是XML文件格式的一种,在cocos2d-x解析.pList方面相关的资料比较少,但本身也很简单,要解析.pList文件可以参考cocos2d-x类库中的CCSpriteFrameCache类和CCParticleSystem类,它主要是使用CCDictionary类来对.pList文件进行 *** 作。
下面有一个.pList文件:
[HTML] view plain copy <?xmlversion="1.0"enCoding="UTF-8"?> <!DOCTYPEpListPUBliC"-//Apple//DTDPList1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <pListversion="1.0"> dictkey>level1</>bg_far_scene>pathstring>images/far_scene.png>pos>{358,309}>bg_near_scene>images/near_scene.png>{360,100}pList> 读取.pList文件的代码如下: [cpp] copy constchar*testPListPath="BsplistDatas\test.pList"; 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")); CCPointpoint=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对象。
copy CCPointpoint=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全部内容,希望文章能够帮你解决cocos2d-x 读取配置文件plist所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)