DragonBonesData* DBCCFactory::loadDragonBonesData(const std::string &dragonBonesFilePath, const std::string &name) { DragonBonesData *existDragonBonesData = getDragonBonesData(name); if (existDragonBonesData) { return existDragonBonesData; } const auto &data = cocos2d::FileUtils::getInstance()->getDataFromFile(dragonBonesFilePath); if (data.getSize() == 0) { return nullptr; } // armature scale float scale = cocos2d::Director::getInstance()->getContentScaleFactor(); // load skeleton.xml using XML parser. dragonBones::XMLDocument doc; doc.Parse(reinterpret_cast<char*>(data.getBytes()), data.getSize()); // paser dragonbones skeleton data. dragonBones::XMLDataParser parser; DragonBonesData *dragonBonesData = parser.parseDragonBonesData(doc.RootElement(), scale); addDragonBonesData(dragonBonesData, name); return dragonBonesData; }
// 加载骨骼数据 DragonBonesData* DBCCFactoryEx::loadDotaDragonBonesData( Dota_Skeleton_Data& dotaSkeletonData, ITextureAtlas& textureAtlas, const std::string &name/* = ""*/) { DragonBonesData *existDragonBonesData = getDragonBonesData(name); if (existDragonBonesData) { return existDragonBonesData; } // armature scale float scale = cocos2d::Director::getInstance()->getContentScaleFactor(); DotaAnimParser parser; DragonBonesData *dragonBonesData = parser.parseDragonBonesData(dotaSkeletonData, textureAtlas, scale); addDragonBonesData(dragonBonesData, name); return dragonBonesData; }