以一个游戏做实例来说明截屏及其使用方法
给菜单按钮设置回调函数,在回调函数中进行截图操作
void GameScene:: MenuCall(Ref* ref){
auto visible = Director::getInstance()->getVisibleSize();
//定义一个屏幕大小的渲染纹理
RenderTexture *sqr = RenderTexture ::create(visible.width, visible.height);
//渲染纹理开始捕捉
sqr->begin();
// 当前场景参与绘制
this->getParent()->visit();
// 捕捉结束
sqr->end();
// 保存为png图片
// sqr->saveToFile("screenshoot.png", kCCImageFormatPNG);
保存为jpg图片
// sqr->saveToFile("screenshoot.jpg", kCCImageFormatJPEG);
Director::getInstance()->pushScene(GamePause::createScene(sqr)); //把渲染纹理的指针传值下一个场景
}
在下一个场景中,用截图做背景
Scene* GamePause::createScene(RenderTexture *sqr){
auto scene = Scene::create();
GamePause *layer = GamePause::create();
scene->addChild(layer,1);
auto back_sqr = Sprite::createWithTexture(sqr->getSprite()->getTexture());//获取截图
back_sqr->setPosition(VISIBLESIZE/2); //设置位置
back_sqr->setFlippedY(true); //设置翻转
back_sqr->setColor(Color3B::GRAY);
scene->addChild(back_sqr);
auto back_menu = Sprite::createWithSpriteFrameName("menu_bg.png"); //这是中间菜单框的图片
back_menu->setPosition(VISIBLESIZE/2);
scene->addChild(back_menu);
return scene;
};