该问题的确在半透明的图上可以重现,这是由于引擎开启了预乘,但是你要在原生DOM里用,可能不需要这个预乘,
基于你是2.x引擎,所以解决方案有两种。
一、你可以在你入口类Main里,用引擎配置关掉预乘,相关的配置代码如下:
Config.premultipliedAlpha = false;
二、如果你不想关掉预乘,你可以自行修改引擎库里的代码,通过在drawToCanvas里反预乘来解决这个问题
bin\libs里找到laya.core.js,找到static drawToCanvas方法[code] ....不变
var dt = ctx._targets.getData(0, 0, canvasWidth, canvasHeight);
//增加开始,进行反预乘处理
for (var i= 0, len= dt.length; i < len; i += 4) {
var alpha = dt[i + 3] / 255.0;
if (alpha > 0) {
dt /= alpha;
dt[i + 1] /= alpha;
dt[i + 2] /= alpha;
}
}
//增加结束
ctx.destroy();
....不变[/code]
如果用的压缩库,压缩库里也改一下。