Пример #1
0
    /**
    * 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;
    }
Пример #2
0
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;
}