利用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);
		sprite->visit();
		render->end();

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

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

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...