cocos2dx[3.2](18)——屏幕截图ScreenShot-创新互联

【唠叨】

创新互联公司自2013年创立以来,先为平山等服务建站,平山等地企业,进行企业商务咨询服务。为平山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

    屏幕截图有两种方式:

    (1)使用RenderTexture:这是在2.x版本时最常用的的截图方法。

    (2)使用utils::captureScreen() :在3.2版本中新增的截图方法。

【致谢】

    http://blog.csdn.net/ganpengjin1/article/details/19088921

    http://cn.cocos2d-x.org/article/index?type=wiki&url=/doc/cocos-docs-master/manual/framework/native/wiki/how-to-save-a-screenshot/zh.md


【RenderTexture】

    RenderTexture这个动态纹理类,顾名思义就是可以动态创建纹理图片。

    屏幕截图主要步骤:

        > 开始截图:render->begin();

        > 遍历场景:scene->visit();

        > 结束截图:render->end();

        > 保存截图:render->saveToFile(string& filename, Image::Format format);

    其中Image::Format为图片格式,可以保存为PNG、或JPG两种格式。

    即:Image::Format::PNGImage::Format::JPG

1、截图方法

//
void HelloWorld::capture(Ref* sender)
{
	CCLOG("ScreenShot");

	//获取屏幕尺寸大小
	Size winSize = CCDirector::sharedDirector()->getWinSize();

	//创建RenderTexture,纹理图片大小为窗口大小winSize
	RenderTexture* screen = RenderTexture::create(winSize.width, winSize.height);

	//屏幕截图
	screen->begin();            //开始抓屏
	this->getParent()->visit(); //遍历当前场景Scene的所有子节点信息,画入screen中
	screen->end();              //结束抓屏

	//保存截图
	screen->saveToFile("ScreenShot.png", Image::Format::PNG); //保存为PNG格式
	//screen->saveToFile("ScreenShot.jpg", Image::Format::JPG); //保存为JPG格式
}
//

2、保存路径

    > Win32  :保存在 Debug.win32/ 目录下。

    > Android:保存在 /data/data/com.summer.hello/files/ScreenShot.png 。


【utils::captureScreen】

    在v3.2版本utils::captureScreen()方法被加入用于保存屏幕截图。

1、定义

//
	// > afterCaptured :该方法将在捕捉指令后被执行。
	//                    > bool   : 捕捉屏幕截图是否成功。
	//                    > string : 截图存储的路径。
	// > filename      :截图的名字。
	//                    > 可以只是一个文件名。  像这样ScreenShot.png。
	//                    > 也可以是一个绝对路径。像这样/sdcard/ScreenShot.png。
	void captureScreen(const std::function& afterCaptured, const std::string& filename)
//

2、截图方法

//
//屏幕截图
void HelloWorld::capture(Ref* sender)
{
	CCLOG("ScreenShot");
	utils::captureScreen(CC_CALLBACK_2(HelloWorld::afterCapture, this), "ScreenShot.png");
}

//截图后执行afterCapture
void HelloWorld::afterCapture(bool succeed, const std::string& outputFile)
{
	if (succeed)
	{
		CCLOG("%s", outputFile.c_str());
		//显示截图
		Sprite* sp = Sprite::create(outputFile);
		sp->setPosition(winSize / 2);
		this->addChild(sp);
		sp->setScale(0.25); //放缩
	}
	else
	{
		CCLOG("Capture screen failed.");
	}
}
//

3、保存路径

    filename可以只是一个文件名(保存到相对路径):像这样 "ScreenShot.png"

    filename也可以是一个绝对路径         :像这样 "/sdcard/ScreenShot.png"

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:cocos2dx[3.2](18)——屏幕截图ScreenShot-创新互联
网页地址:http://ybzwz.com/article/cdjois.html