麒麟子Cocos Creator實用技巧四:打包原生App截圖白屏解決方案

大家在做棋牌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);
}    

 

發佈了233 篇原創文章 · 獲贊 546 · 訪問量 119萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章