-
Creator 版本:2.2.2
-
目标平台: Android
-
详细报错信息,包含调用堆栈:
-
重现方式:
-
之前哪个版本是正常的 :
-
手机型号 :
-
手机浏览器 :
-
编辑器操作系统 :
-
编辑器之前是否有其它报错 :
-
出现概率:100%
-
额外线索:
原图:
截屏后的图:
老方法已经实验过,根本没办法设置,我知道是遮罩的问题,总不能我把所有遮罩临时都禁用掉吧?
Creator 版本:2.2.2
目标平台: Android
详细报错信息,包含调用堆栈:
重现方式:
之前哪个版本是正常的 :
手机型号 :
手机浏览器 :
编辑器操作系统 :
编辑器之前是否有其它报错 :
出现概率:100%
额外线索:
原图:
截屏后的图:
老方法已经实验过,根本没办法设置,我知道是遮罩的问题,总不能我把所有遮罩临时都禁用掉吧?
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
感谢楼主的代码
确实能解决问题。