/** * Parse the SkeletonData. * @param xml The SkeletonData xml to parse. * @return A SkeletonData instance. */ SkeletonData *XMLDataParser::parseSkeletonData(const dragonBones::XMLElement *rootElement) { String version = rootElement->Attribute(ConstValues::A_VERSION.c_str()); if(version != DragonBones::DATA_VERSION) { throw std::invalid_argument("Nonsupport version!"); } uint frameRate = rootElement->IntAttribute(ConstValues::A_FRAME_RATE.c_str()); SkeletonData *data = new SkeletonData(); data->name = rootElement->Attribute(ConstValues::A_NAME.c_str()); for(const dragonBones::XMLElement* armatureXML = rootElement->FirstChildElement(ConstValues::ARMATURE.c_str()) ; armatureXML ; armatureXML = armatureXML->NextSiblingElement(ConstValues::ARMATURE.c_str())) { data->addArmatureData(parseArmatureData(armatureXML, data, frameRate)); } return data; }
SkeletonData* ObjectDataParser::parseSkeletonData(Json::Value & rawData) { double version = rawData[ConstValues::A_VERSION].asDouble(); if (version != DragonBones::DATA_VERSION) { printf("[ObjectDataParser] Nonsupport version %f!\n", version); } unsigned int frameRate = rawData[ConstValues::A_FRAME_RATE].asUInt(); SkeletonData* data = new SkeletonData(); data->name = rawData[ConstValues::A_NAME].asCString(); Json::Value & armature = rawData[ConstValues::ARMATURE]; printf("armature size %u\n", armature.size()); for (unsigned int i = 0; i < armature.size(); i++) { Json::Value & armatureObject = armature[i]; data->addArmatureData(parseArmatureData(armatureObject, data, frameRate)); } return data; }