比较Cocos2d-x v2.x与v3.x的截图功能

转载 2015年04月07日 09:39:23

(1)Cocos2d-x 2.x

Cocos2d-x 2.x没有提供截图功能,但是可以用CCRenderTexture来实现这个功能:

  1. void CTestLayer::SaveScreenShot()  
  2.   {  
  3.       //获取屏幕尺寸    
  4.       CCSize size = CCDirector::sharedDirector()->getWinSize();  
  5.       //使用屏幕尺寸初始化一个空的渲染纹理对象    
  6.       CCRenderTexture* texture = CCRenderTexture::create((int)size.width, (int)size.height);  
  7.       //设置位置        
  8.       texture->setPosition(ccp(size.width/2, size.height/2));  
  9.       //开始获取        
  10.       texture->begin();  
  11.       //遍历场景节点对象,填充纹理到texure中    
  12.       CCDirector::sharedDirector()->getRunningScene()->visit();  
  13.       //结束获取    
  14.       texture->end();  
  15.       //保存为PNG图,Win32/Debug目录下    
  16.       texture->saveToFile("screenshot.png", kCCImageFormatPNG);  
  17.   }  

(2)Cocos2d-x 3.x

在Cocos2d-x 3.2之前,引擎也没有提供截图功能,同样可以使用RenderTexture实现:

  1. void Director::saveScreenshot(const std::string& fileName,const std::function<void(const std::string&)>& callback)  
  2.   {  
  3.       Image::Format format;  
  4.       //进行后缀判断    
  5.       if(std::string::npos != fileName.find_last_of(".")){  
  6.         auto extension = fileName.substr(fileName.find_last_of("."),fileName.length());  
  7.         if (!extension.compare(".png")) {  
  8.             format = Image::Format::PNG;  
  9.         } else if(!extension.compare(".jpg")) {  
  10.             format = Image::Format::JPG;  
  11.         } else{  
  12.             log("cocos2d: the image can only be saved as JPG or PNG format");  
  13.             return;  
  14.         }  
  15.     } else {  
  16.         log("cocos2d: the image can only be saved as JPG or PNG format");  
  17.         return ;  
  18.     }  
  19.     //获取屏幕尺寸,初始化一个空的渲染纹理对象    
  20.       auto renderTexture = RenderTexture::create(getWinSize().width, getWinSize().height, Texture2D::PixelFormat::RGBA8888);  
  21.       //清空并开始获取    
  22.       renderTexture->beginWithClear(0.0f, 0.0f, 0.0f, 0.0f);  
  23.       //遍历场景节点对象,填充纹理到RenderTexture中    
  24.       getRunningScene()->visit();  
  25.       //结束获取    
  26.       renderTexture->end();  
  27.       //保存文件    
  28.       renderTexture->saveToFile(fileName , format);  
  29.       //使用schedule在下一帧中调用callback函数    
  30.       auto fullPath = FileUtils::getInstance()->getWritablePath() + fileName;  
  31.       auto scheduleCallback = [&,fullPath,callback](float dt){  
  32.           callback(fullPath);  
  33.       };  
  34.       auto _schedule = getRunningScene()->getScheduler();  
  35.       _schedule->schedule(scheduleCallback, this, 0.0f,0,0.0f, false"screenshot");  
  36.   }  
(3)从Cocos2d-x 3.2之后开始,引擎提供了captureScreen函数来实现截图功能:

  1. void Util::captureScreen(const std::function<void(boolconst std::string&)>& afterCaptured, const std::string& filename); 

比较Cocos2d-x v2.x与v3.x的截图功能

(1)Cocos2d-x 2.x Cocos2d-x 2.x没有提供截图功能,但是可以用CCRenderTexture来实现这个功能: 1 2 3 ...
  • Kaitiren
  • Kaitiren
  • 2014年09月04日 14:06
  • 3418

cocos2d-x使用OpenGL获取屏幕截图

今天就来说说cocos2d-x中使用OpenGL获取屏幕截图吧,因为网上关于cocos2d-x的入门教程非常多,所以我就只写一些用cocos2d-x实现具体功能的文章跟大家分享啦~ 截图在游戏中经常会...
  • guochuanqi
  • guochuanqi
  • 2013年12月07日 20:06
  • 2980

Cocos2d-x 截图功能

(1)Cocos2d-x 2.x Cocos2d-x 2.x没有提供截图功能,但是可以用CCRenderTexture来实现这个功能: void CTestLayer::SaveScree...
  • w174504744
  • w174504744
  • 2014年09月03日 17:44
  • 3897

cocos2d-x中截屏的方法、保存图片,以及使用截屏作为背景实例

cocos2d-x中截屏的方法、保存图片,以及使用截屏作为背景实例
  • qq_32319583
  • qq_32319583
  • 2016年11月29日 17:50
  • 654

Cocos2d-x官方中文文档 v2.x

本系列文章基于cocos2d-x 2.1.1版本编写,后续会不断更新版本与最新api同步。 基本知识 导演,场景,层,以及精灵的介绍     Director, Scene, La...
  • aa294194253
  • aa294194253
  • 2014年09月22日 13:02
  • 345

Cocos2d-x官方中文文档 v3.x

基础概念 导演、场景、层、精灵文本标签(Label)菜单(Menu)调度器(scheduler) 图像渲染与动画 坐标系详解场景转换(Transitions)动作 (Action)多...
  • aa294194253
  • aa294194253
  • 2014年09月22日 12:58
  • 703

[Cocos2d-x v3.x]cocos2d::Vector

文章转载于: v3.0 beta加入 定义在"COCOS2DX_ROOT/cocos/base"的"CCVector.h"头文件中。...
  • chinahaerbin
  • chinahaerbin
  • 2014年06月05日 00:05
  • 1375

[Cocos2d-x v3.x官方文档]事件分发机制

转载:© 2014 泰然网
  • chinahaerbin
  • chinahaerbin
  • 2014年05月14日 22:46
  • 745

【独立开发者er Cocos2d-x实战 006】使用Cocos2dx 实现截图功能

今天台风“灿鸿”来袭,博主默默在家码代码。废话不多说,今天我们要讲的就是截图。Cocos2dx把不同版本实现截图方式不同,我用的是Cocos2dx3.4版本。如果你的版本是Cocos2dx3.2以后的...
  • chenqiai0
  • chenqiai0
  • 2015年07月11日 14:13
  • 3012

Cocos2d-x V3.x内存管理分析

原文:http://galoisplusplus.coding.me/blog/2014/07/30/memory-management-in-cocos2d-x-v3/ cocos...
  • zhangxiao93
  • zhangxiao93
  • 2016年07月20日 15:08
  • 705
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:比较Cocos2d-x v2.x与v3.x的截图功能
举报原因:
原因补充:

(最多只允许输入30个字)