利用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");
}


你可能感兴趣的:(cocos2d-x,plist)