Ejemplo n.º 1
0
// 加载纹理集数据
ITextureAtlas* DBCCFactoryEx::loadDotaTextureAtlas(
	const std::string &fcaFile,
	const std::string &name/* = ""*/)
{
	ITextureAtlas *existTextureAtlas = getTextureAtlas(name);

	if (existTextureAtlas)
	{
		refreshTextureAtlasTexture(name.empty() ? existTextureAtlas->textureAtlasData->name : name);
		return existTextureAtlas;
	}

	// textureAtlas scale
	float scale = cocos2d::Director::getInstance()->getContentScaleFactor();

	DotaAnimParser parser;
	DBCCTextureAtlasEx *textureAtlas = new DBCCTextureAtlasEx();
	textureAtlas->_fcaFile = fcaFile;
	textureAtlas->textureAtlasData = parser.parseTextureAtlasData(fcaFile, scale);
	textureAtlas->textureAtlasData->name = name;

	addTextureAtlas(textureAtlas, name);
	refreshTextureAtlasTexture(name.empty() ? textureAtlas->textureAtlasData->name : name);
	return textureAtlas;
}
Ejemplo n.º 2
0
ITextureAtlas* DBCCFactory::loadTextureAtlas(const std::string &textureAtlasFile, const std::string &name)
{
    ITextureAtlas *existTextureAtlas = getTextureAtlas(name);

    if (existTextureAtlas)
    {
        refreshTextureAtlasTexture(name.empty() ? existTextureAtlas->textureAtlasData->name : name);
        return existTextureAtlas;
    }

    const auto &data = cocos2d::FileUtils::getInstance()->getDataFromFile(textureAtlasFile);
    if (data.getSize() == 0)
    {
        return nullptr;
    }

    // textureAtlas scale
    float scale = cocos2d::Director::getInstance()->getContentScaleFactor();

    dragonBones::XMLDocument doc;
    doc.Parse(reinterpret_cast<char*>(data.getBytes()), data.getSize());
    dragonBones::XMLDataParser parser;
    DBCCTextureAtlas *textureAtlas = new DBCCTextureAtlas();
    textureAtlas->textureAtlasData = parser.parseTextureAtlasData(doc.RootElement(), scale);

    int pos = textureAtlasFile.find_last_of("/");

    if (std::string::npos != pos)
    {
        std::string base_path = textureAtlasFile.substr(0, pos + 1);
        textureAtlas->textureAtlasData->imagePath = base_path + textureAtlas->textureAtlasData->imagePath;
    }

    //
    addTextureAtlas(textureAtlas, name);
    refreshTextureAtlasTexture(name.empty() ? textureAtlas->textureAtlasData->name : name);
    return textureAtlas;
}