以一個遊戲做實例來說明截屏及其使用方法
給菜單按鈕設置回調函數,在回調函數中進行截圖操作
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;
};