Cocos2d-x 3.x 生成和加载plist文件
2016-10-26 22:48
513 查看
一、创建plist文件
在学习《Cocos2d-x 3.x游戏开发之旅》时,点击完屏幕以创建很多炮塔的(x, y)坐标,使用ValueMap把炮塔坐标写入plist文件,保存当前玩家创建的炮塔,以便再次进入游戏时还原之前的炮塔(根据坐标)。下面是创建plist文件的函数:void TowerPosEditorScene::outputPosToPlistFile() { String* s_pFilePath = String::createWithFormat("tollgate/towerPos_level_%d.plist", m_iCurLevel); outputPosToPlistFile(m_towerPosList, s_pFilePath->getCString()); } // 输出plist文件————炮台坐标 void TowerPosEditorScene::outputPosToPlistFile(Vector<PosBase*> coll, const char* sFilePath) { ValueMap fileDataMap; int index = 1;// 这里从1开始 for (auto posBase : coll) { ValueMap data; // typedef unordered_map<std::string key, Value value> ValueMap; data["x"] = posBase->getPos().x; // data[key] = value; data["y"] = posBase->getPos().y; // 注意:fileDataMap为key,data为value fileDataMap[StringUtils::toString(index)] = Value(data);// fileDataMap[key] = value index++; } // Write a ValueMap into a plist file. FileUtils::getInstance()->writeToFile(fileDataMap, sFilePath); }
在outputPosToPlistFile()函数中,首先使用cocos2d::String类创建保存plist文件的”完整路径s_pFilePath变量“,然后把该变量传入重载的outputPosToPlistFile函数。
注意:这里创建文件的方式有点小特别:根据游戏当前等级来命名要创建的plist文件,这样做的好处是,不同等级(或关卡)都会有一份plist文件。
m_towerPosList变量为在在TowerPosEditorScene中声明,用于存储炮塔坐标,PosBase为TowerPos的基类。
二、读取plist文件
玩家创建好炮塔后,点击“输出到文件”后,所有创建的炮塔坐标都存在了plist文件中,那么怎么读取(遍历)plist文件中的炮塔坐标,并把炮塔还原到屏幕呢?作者是这么处理的:/// 加载坐标对象 Vector<PosBase*> PosLoadUtil::loadPosWithFile(const char* sFilePath, Node* container, int iLevel, bool isDebug) { Vector<PosBase*> posList; ValueMap fileDataMap = FileUtils::getInstance()->getValueMapFromFile(sFilePath); int size = fileDataMap.size(); for (int i = 1; i <= size; i++)// 注意i从1开始并<=size { Value value = fileDataMap[StringUtils::toString(i)]; ValueMap data = value.asValueMap(); PosBase* posBase = TowerPos::create(Point(data["x"].asInt(), data["y"].asInt()), isDebug); posList.pushBack(posBase); if (container != NULL) { container->addChild(posBase, iLevel); } } return posList; }
参考:Cocos2d-x 3.x游戏开发之旅 钟迪龙 著
相关文章推荐
- cocos2d-x 内存优化之prv.ccz plist 文件加载
- cocos2d-x 3.0加载PhysicsEditor生成plist的加载器并生成CCPhysicsBody
- iOS-Cocos2d游戏开发】使用Zwoptex生成plist文件
- 用于解析PhysicsEditor生成的plist文件 ,支持cocos2d-x-2.1.5 亲测通过
- cocos2dx中.json和.plist以及.xml文件格式生成加载的不同
- cocos2d 加载 plist文件(帧动画)
- Cocos2d-x 加载 gif 文件,生成jpg
- Cocos2d使用TexturePacker工具打包生成plist和pvr.ccz文件方法总结
- Cocos2d-x中异步动态加载图片或Plist文件
- 【iOS-Cocos2d游戏开发】使用Zwoptex生成plist文件
- 批处理生成动画文件(cocos2d,每组动画一个plist)
- cocos2d-x 3.x读取plist(xml)配置文件
- Cocos2d-3.x_读取plist文件
- Cocos2d使用TexturePacker工具打包生成plist和pvr.ccz文件方法总结 分类: cocos2d其他 2015-07-11 09:06 13人阅读 评论(0) 收藏
- Cocos2d使用TexturePacker工具打包生成plist和pvr.ccz文件方法总结
- cocos2d-x 3.0加载PhysicsEditor生成plist的加载器并生成CCPhysicsBody
- cocos2d-x使用TexturePacker打包图片及使用生成的plist文件创建精灵动画
- cocos2d-x使用TexturePacker打包图片及使用生成的plist文件创建精灵动画
- 批处理生成动画文件(cocos2d,每组动画一个plist)
- 【Cocos2d-x】 Cocos2d-x 3.X 异步加载plist图片资源