大佬教程收集整理的这篇文章主要介绍了cocos2dx3.x以上读取Plist文件的方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
先看下我们需要读取的pilst文件 <plist version="1.0"> <Dict> <key>metadata</key> <Dict> <key>format</key> <Integer>1</Integer> </Dict> <key>bodies</key> <Dict> <key>green</key> <Dict> <key>anchorpoint</key> <String>{ 0.50000,0.50000 }</String> <key>fixtures</key> <array> <Dict> <key>mass</key> <real>2</real> <key>elasticity</key> <real>0</real> <key>friction</key> <real>0.5</real> <key>surface_velocity</key> <String>{ 0.00000,0.00000 }</String> <key>layers</key> <Integer>0</Integer> <key>group</key> <Integer>0</Integer> <key>collision_type</key> <Integer>0</Integer> <key>isSensor</key> <false/> <key>fixture_type</key> <key>POLYGON</key> <key>polygons</key> <array> <array> <String>{ -50.00000,-38.00000 }</String> <String>{ -17.00000,48.00000 }</String> <String>{ 9.00000,0.00000 }</String> <String>{ 33.00000,-73.00000 }</String> </array> <array> <String>{ 23.00000,48.00000 }</String> <String>{ 90.00000,6.00000 }</String> <String>{ 9.00000,0.00000 }</String> <String>{ -17.00000,48.00000 }</String> </array> </array> </Dict> </array> </Dict> </Dict> </Dict> </plist>好了上代码
#pragma once #include"cocos2d.h" class ReadPlistFlie { public: ReadPlistFlie(); ~ReadPlistFlie(); /*获取Dict文件*/ cocos2d::ValueMap getDictPlistbyName(std::string str); /*获取arr文件*/ cocos2d::ValueVector getarrayPlistbyName(std::string str); /*获取Dict中的Dict*/ cocos2d::ValueMap getPilstDict(cocos2d::ValueMap vmap,std::string key); /*获取arr下标字典*/ cocos2d::ValueMap getPilstDict(cocos2d::ValueVector vvector,int ideX); /*获取Dict中的cocos2d::string* */ std::string getPlistString(cocos2d::ValueMap vmap,std::string key); /*获取Dict中的float*/ float getPlistfloat(cocos2d::ValueMap vmap,std::string key); /*获取Dict中的int*/ int getPlisTint(cocos2d::ValueMap vmap,std::string key); /*获取Dict中的bool*/ static bool getPlistBool(cocos2d::ValueMap vmap,std::string key); /*获取Dict中的array*/ cocos2d::ValueVector getPlistArray(cocos2d::ValueMap vmap,std::string key); /*获取arrayx下标中的array*/ cocos2d::ValueVector getPlistArray(cocos2d::ValueVector vvector,int ideX); /*获取Dict中的Point*/ cocos2d::Vec2 getPilstPoint(cocos2d::ValueMap vmap,std::string key); /*获取array下标中的point*/ cocos2d::Vec2 getPilstPoint(cocos2d::ValueVector vvector,int ideX); }; #include "ReadPlistFlie.h" USING_NS_Cc; ReadPlistFlie::readPlistFlie() { } ReadPlistFlie::~ReadPlistFlie() { } cocos2d::ValueMap ReadPlistFlie::getDictPlistbyName(std::string str) { ValueMap valuemap = FileUtils::geTinstance()->getValueMapFromFile(str.c_str()); return valuemap; } cocos2d::ValueVector ReadPlistFlie::getarrayPlistbyName(std::string str) { ValueVector valuevector = FileUtils::geTinstance()->getValueVectorFromFile(str.c_str()); return valuevector; } cocos2d::ValueMap ReadPlistFlie::getPilstDict(cocos2d::ValueMap vmap,std::string key) { ValueMap valuemap = vmap.at(key.c_str()).asValueMap(); return valuemap; } cocos2d::ValueMap ReadPlistFlie::getPilstDict(cocos2d::ValueVector vvector,int ideX) { ValueMap valuemap = vvector.at(ideX).asValueMap(); return valuemap; } std::string ReadPlistFlie::getPlistString(cocos2d::ValueMap vmap,std::string key) { std::string str = vmap.at(key.c_str()).asString(); return str; } float ReadPlistFlie::getPlistfloat(cocos2d::ValueMap vmap,std::string key) { float valuefloat = vmap.at(key.c_str()).asFloat(); return valuefloat; } int ReadPlistFlie::getPlisTint(cocos2d::ValueMap vmap,std::string key) { int valueint = vmap.at(key.c_str()).asInt(); return valueint; } bool ReadPlistFlie::getPlistBool(cocos2d::ValueMap vmap,std::string key) { bool valuebool = vmap.at(key.c_str()).asBool(); return valuebool; } cocos2d::ValueVector ReadPlistFlie::getPlistArray(cocos2d::ValueMap vmap,std::string key) { ValueVector valuevector = vmap.at(key.c_str()).asValueVector(); return valuevector; } cocos2d::ValueVector ReadPlistFlie::getPlistArray(cocos2d::ValueVector vvector,int ideX) { ValueVector valuevector = vvector.at(ideX).asValueVector(); return valuevector; } cocos2d::Vec2 ReadPlistFlie::getPilstPoint(cocos2d::ValueMap vmap,std::string key) { Vec2 points = cocos2d::PointFromString(vmap.at(key.c_str()).asString()); return points; } cocos2d::Vec2 ReadPlistFlie::getPilstPoint(cocos2d::ValueVector vvector,int ideX) { Vec2 points = cocos2d::PointFromString(vvector.at(ideX).asString()); return points; }
ValueMap plistDic = getDictPlistbyName("bodySprite.plist"); ValueMap metadata = getPilstDict(plistDic,"metadata"); int format = getPlisTint(metadata,"format"); log("asdad %d",format); ValueMap bodies = getPilstDict(plistDic,"bodies"); ValueMap green = getPilstDict(bodies,"green"); ValueVector fixtures = getPlistArray(green,"fixtures"); ValueMap Dicc = getPilstDict(fixtures,0); ValueVector polygons = getPlistArray(Dicc,"polygons"); for(int i = 0; i< polygons.size();i++) { ValueVector pointarray = getPlistArray(polygons,i); for (int j = 0; j < pointarray.size();j++) { Vec2 points = getPilstPoint(pointarray,j); log("x %f y %f",points.x,points.y); } }
asdad 1 x -50.000000 y -38.000000 x -17.000000 y 48.000000 x 9.000000 y 0.000000 x 33.000000 y -73.000000 x 23.000000 y 48.000000 x 90.000000 y 6.000000 x 9.000000 y 0.000000 x -17.000000 y 48.000000
以上是大佬教程为你收集整理的cocos2dx3.x以上读取Plist文件的方法全部内容,希望文章能够帮你解决cocos2dx3.x以上读取Plist文件的方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。