利用Coco2dx提取plist中的圖片

最近做一個Demo,需要利用序列幀圖片,想到Cocos2dx能夠解析plist文件獲取打包後圖片中的小圖片,就想如果Cocos2dx能夠提供保存精靈/紋理到文件中的方法,那麼就可以將plist文件中的小圖片提取出來。果不其然,RenderTexture類提供了saveToFile方法,用於將紋理保存到文件中,下面直接上代碼以供以後參考。

void GameScene::SaveFiles()
{
	//加載plist文件到緩存
	SpriteFrameCache::getInstance()->addSpriteFramesWithFile("fish.plist");

	std::stringstream ss;
	std::string filename;

	//遍歷序列幀圖片
	for (int i=0; i<10; i++)
	{
		ss.clear();
		ss.str("");
		ss << "fish_" << (i + 1) << ".png";
		filename = ss.str();

		//獲取精靈
		auto sprite = Sprite::createWithSpriteFrameName(filename);
		sprite->setAnchorPoint(Vec2::ZERO);
		float width = sprite->getContentSize().width;
		float height = sprite->getContentSize().height;

		//創建渲染紋理
		auto render = RenderTexture::create(width, height, Texture2D::PixelFormat::RGBA8888);
		render->setSprite(sprite);

		//填充紋理
		render->beginWithClear(0, 0, 0, 0);
		sprite->visit();
		render->end();

		//文件被保存在類似於C:\Users\Administrator\AppData\Local\ProjectName的路徑中
		render->saveToFile(filename, Image::Format::PNG);
	}

	//從緩存移除plist文件
	SpriteFrameCache::getInstance()->removeSpriteFramesFromFile("fish.plist");
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章