cocos creator 截图 白色一片

  • Creator 版本:2.2.2

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

截屏后的图:

老方法已经实验过,根本没办法设置,我知道是遮罩的问题,总不能我把所有遮罩临时都禁用掉吧?

IOS 没问题吗?可否给下demo,看看具体情况~

IOS还没有开发,我只有本地环境,没法给demo啊 截屏代码我可以发给你,这个截屏的问题是个老问题了…一直都存在的吧

/**
 * 截屏返回当前Base64的界面
 */
static ScreenShotToBase64(): string {
    let node = new cc.Node();
    let _node = cc.director.getScene();
    let size = cc.director.getWinSize();
    node.parent = _node;
    node.width = size.width;
    node.height = size.height;

    let camera = node.addComponent(cc.Camera);
    node.x = size.width / 2;
    node.y = size.height / 2;
    // 设置你想要的截图内容的 cullingMask
    camera.cullingMask = 0xffffffff;


    // 新建一个 RenderTexture,并且设置 camera 的 targetTexture 为新建的 RenderTexture,这样 camera 的内容将会渲染到新建的 RenderTexture 中。
    let texture = new cc.RenderTexture();



    let gl = cc.game["_renderContext"];
    // 如果截图内容中不包含 Mask 组件,可以不用传递第三个参数
    //  gl.DEPTH24_STENCIL8_OES,  gl.STENCIL_INDEX8
    // cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888, gl.DEPTH24_STENCIL8_OES

    texture.initWithSize(size.width, size.height, (<any>cc).gfx.RB_FMT_D24S8);
    camera.targetTexture = texture;

    let base64_str: string = "";

    // 渲染一次摄像机,即更新一次内容到 RenderTexture 中
    camera.render(null);
    camera.enabled = false;
    camera.destroy();

    let data = texture.readPixels();

    //保存到手机
    let filePath = jsb.fileUtils.getWritablePath() + 'test.png';
    let success = (<any>jsb).saveImageData(data, size.width, size.height, filePath);
    if (success) {
        //从本地读取文件到unit8Array
        let imageData = jsb.fileUtils.getDataFromFile(filePath);
        base64_str = this._arrayBufferToBase64(imageData);
    }
    node.destroy();
    return base64_str;
}

而且局部截屏怎么弄我现在都没整明白,其实我还发现几个BUG,有一个bug是runAction的,多次运行后 部分动作会不在执行,动作就卡住了,永远不回执行callfun的动作,不知道cc.Tween有没有这个问题

换成这个设置试试。

早就试过了根本没用, 有一种方法有用,就是把滚动遮罩Mask在截屏的时候禁用…截图后在打开

而且必须把界面上的所有 有关Mask的全部禁用掉…STENCIL_INDEX8 各种网上说的配置都试过… 有些说是传4个参数,但是这个好像只能传3个参数…直接就干懵了!~ 现在是退而求其次 禁用了Mask组件

昨天还遇到个问题… 2.2.2升级到2.3.1 后 android 不能build,但是可以直接运行… 后来实在没整明白,就回退到2.2.2版本了

哥们你现在在做实验么?还是已经把我放弃了!

看着像是摄像机的问题, 你加个摄像机放在同一节点下试试呢

你的遮罩不会出现截屏白屏问题?

简单测试了ScrollView,并没有复现,你可以自己试试,能不能给个demo,你这个问题是怎么出现的?

等我忙完 我弄个demo 发给你们看下,辛苦!

换成这个值就可以成功了
gl.STENCIL_INDEX8

感谢楼主的代码

确实能解决问题。