【玩转cocos2d-x之二十四】截图保存功能的实现

原创作品,转载请标明http://www.jb51.cc/article/p-bomolgql-ep.html


官方TestCpp有这个demo了,这里还是把它单独拖出来写一下,游戏推广的一个很重要组成就是玩家分享,所以游戏截图就起到很大作用了。截图功能通过CCRenderTexture实现。


1.CCRenderTexture

CCRenderTexture是一个通用渲染对象,可以通过构建一个CCRenderTexture对象,进而把要渲染的东西填充进去,在渲染开始前调用call函数调用cocos的场景的visit函数对其进行渲染,渲染结束后调用end函数。CCRenderTexture继承于CCNode,所以可以简单地把渲染纹理添加到你的场景中,就像处理其它cocos中的节点一样,当然它还提供了保存功能,可以把渲染纹理保存为PNG或JPG格式。


2.API

  1. //创建和初始化函数
  2. staticCCRenderTexture*create(intw,inth,CCTexture2DPixelFormateFormat,gluintuDepthStencilFormat);
  3. inth);
  4. boolinitWithWidthAndHeight(
  5. //开始获取
  6. voidbegin();
  7. //开始渲染时清除之前渲染的内容
  8. voidbeginWithClear(floatr,87); font-weight:bold; background-color:inherit">floatg,87); font-weight:bold; background-color:inherit">floatb,87); font-weight:bold; background-color:inherit">floata);
  9. floata,87); font-weight:bold; background-color:inherit">floatdepthValue);
  10. floatdepthValue,87); font-weight:bold; background-color:inherit">intstencilValue);
  11. //结束获取
  12. voidend();
  13. //清除纹理
  14. voidclear(voidclearDepth(voidclearStencil(//保存纹理为图片文件,可以选择JPG/PNG格式,认是JPEG格式,成功返回真
  15. boolsavetoFile(constchar*szFilePath);
  16. char*name,tCCImageFormatformat);

3.示例

修改HelloWorld中结束菜单的回调函数如下:

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

4.源码下载

下载地址:http://download.csdn.net/detail/jackyvincefu/6538305

相关文章

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