大家在做棋牌App或者一些特定需求的時候,需要截取當前遊戲屏幕內容保存。
我們一般是採用cc.RenderTexture來截圖並保存到遊戲的可寫目錄
有時候會遇上,截出來的圖片是白屏,或者部分白屏。
經過多方測試,我們發現,是Mask的鍋,用了cc.Mask的界面,截圖的時候,就會遇上這樣的問題。
如果遇上這樣的問題,只需要檢查你的cc.RenderTexture初始化的時候,是否少了參數。最主要的是第三個參數,一定要是RGBA8888
var texture = new cc.RenderTexture(w, h, cc.Texture2D.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES);
完整示例如下:
function captureScreen(){
var size = cc.director.getWinSize();
var fileName = "result_share.jpg";
var fullPath = jsb.fileUtils.getWritablePath() + fileName;
if (jsb.fileUtils.isFileExist(fullPath)) {
jsb.fileUtils.removeFile(fullPath);
}
var width = Math.floor(size.width);
var height = Math.floor(size.height);
var texture = new cc.RenderTexture();
texture.initWithSize(width, height, cc.gfx.RB_FMT_D24S8);
texture.setPosition(cc.p(size.width / 2, size.height / 2));
texture.begin();
cc.director.getRunningScene().visit();
texture.end();
texture.saveToFile(fileName, cc.IMAGE_FORMAT_JPG);
}