//cocos2d-x 3.x 版本的新方法
utils::captureScreen(CC_CALLBACK_2(GameResultLayer::afterCaptured,this), "screenshoot.png");
//回调
void GameResultLayer::afterCaptured(bool succeed,const std::string& outputFile)
{
if (succeed)
{
CCLOG("outputFile = %s", outputFile.c_str());
}
else
{
log("Capture screen failed.");
}
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Scene * curScene = Director::getInstance()->getRunningScene();
Point ancPos = curScene->getAnchorPoint();
//定义一个屏幕大小的渲染纹理
RenderTexture* renderTexture = RenderTexture::create(visibleSize.width, visibleSize.height, Texture2D::PixelFormat::RGBA8888);
//渲染纹理开始捕捉
renderTexture->begin();
// 缩小屏幕截屏区域
// curScene->setScale(.5);
// curScene->setAnchorPoint(cocos2d::Point(0, 0));
//绘制当前场景
curScene->visit();
//结束
renderTexture->end();
//保存png
renderTexture->saveToFile("screenshoot.png", Image::Format::PNG);
// 恢复屏幕尺寸
// curScene->setScale(1);
// curScene->setAnchorPoint(ancPos);