当前项目使用的cocos2d-x 1.0.3的版本。方法和2.0以后的版本的可能名字不太一样,但是大体意思一致:
coocs2d-x 截图使用 CCRenderTexture的方法
参考资料: http://wxphp.com/wxd-2b09a027bb68a98270fefa26-1.html
http://blog.csdn.net/xexiyong/article/details/9272291
//此处添加截图代码,将截图保存后,再通过JNI传递到android端调用shareSDK分享图片 ,分享完成后获得弹珠
void GameRecordDlg::shareCallback(CCObject* pSender){
CCLog("shareCallback......");
/**
截图相关
*/
CCSize size = CCDirector::sharedDirector()->getWinSize();
//定义一个屏幕大小的渲染纹理
CCRenderTexture* pScreen = CCRenderTexture::renderTextureWithWidthAndHeight(size.width,size.height);
//获得当前的场景指针
//CCScene* pCurScene = CCDirector::sharedDirector()->getRunningScene();
//获得现在Layer
GameRecordDlg* pCurScene = GameRecordDlg::sharedRecordDlg();
//渲染纹理开始捕捉
pScreen->begin();
//当前场景参与绘制
pCurScene->visit();
//结束捕捉
pScreen->end(false);
//路径 注意有坑,sdcard 双// ,android sdcard path
const char *shareFile = "//sdcard/ShareImage.png";
//保存为png 没有参数的保存图片方法可以直接将图片保存到指定的路径中
//但是输入参数的方法(kCCImageFormatPNG) 文件名中不能指定路,方法内已经获得默认的路径
if ( pScreen->saveBuffer( shareFile, 0, 0, size.width, size.height) )//pScreen->saveBuffer(kCCImageFormatPNG, shareFile, 0, 0, size.width, size.height)
{
CCLog("saveBuffer scuess");
}else{
CCLog("saveBuffer error");
}
//结束且释放
CC_SAFE_DELETE(pScreen);
}
//坑了一晚上,备忘。。