-
Creator 版本:2.0.1
-
目标平台: Facebook Instant Game
-
详细报错信息,包含调用堆栈:
-
重现方式:
-
之前哪个版本是正常的 :
-
手机型号 :iPhone6 plus 小米6
-
手机浏览器 :
-
编辑器操作系统 :
-
编辑器之前是否有其它报错 :
-
出现概率:100%
-
额外线索:
使用了2.0.1版本的摄像机截图功能,代码用的是官方的例子,
截图中人物头像用了mask,但是截图以后,头像有问题
这个是在facebook中截图分享的样子
这是正常画面中的样子
以下是场景中的头像结构

mask配置

以下是截图的代码
static Screenshot(rangeImg:cc.Node)
{
let width=rangeImg.width;
let height=rangeImg.height;
let node = new cc.Node();
node.parent = rangeImg;
let camera = node.addComponent(cc.Camera);
node.x=0;
node.y=0;
// 设置你想要的截图内容的 cullingMask
camera.cullingMask = 0xffffffff;
// 新建一个 RenderTexture,并且设置 camera 的 targetTexture 为新建的 RenderTexture,这样 camera 的内容将会渲染到新建的 RenderTexture 中。
let texture = new cc.RenderTexture();
// 如果截图内容中不包含 Mask 组件,可以不用传递第三个参数
texture.initWithSize(width,height);
camera.targetTexture = texture;
// 渲染一次摄像机,即更新一次内容到 RenderTexture 中
camera.render(null);
// 这样我们就能从 RenderTexture 中获取到数据了
let data = texture.readPixels();
// 接下来就可以对这些数据进行操作了
let tempCanvas = document.createElement('canvas');
let ctx = tempCanvas.getContext('2d');
tempCanvas.width = texture.width;
tempCanvas.height = texture.height;
let rowBytes = width * 4;
for (let row = 0; row < height; row++)
{
let srow = height - 1 - row;
let imageData = ctx.createImageData(width, 1);
let start = srow*width*4;
for (let i = 0; i < rowBytes; i++)
{
imageData.data[i] = data[start+i];
}
ctx.putImageData(imageData, 0, row);
}
return tempCanvas.toDataURL("image/jpeg");
//let dataURL = tempCanvas.toDataURL("image/png");
//let img = document.createElement("img");
//img.src = dataURL;
}
请教下有什么办法修复吗?

