Javascript Firefox中丑陋的径向渐变。我怎么能修好它?

Javascript Firefox中丑陋的径向渐变。我怎么能修好它?,javascript,canvas,Javascript,Canvas,我正在用画布画一个径向渐变扇形。Chome工作得很好,Firefox产生了奇怪且不一致的结果,在不同的角度上有所不同。我该如何解决这个问题 var选项={ x0:300, y0:300, 半径:181, 方向:77, 视力:80 }; var canvas=document.getElementById('canvas'); var ctx=canvas.getContext('2d'); 函数环面(度){ 返回度*数学PI/180; } 职能部门(ctx、opt){ ctx.beginPat

我正在用画布画一个径向渐变扇形。Chome工作得很好,Firefox产生了奇怪且不一致的结果,在不同的角度上有所不同。我该如何解决这个问题

var选项={
x0:300,
y0:300,
半径:181,
方向:77,
视力:80
};
var canvas=document.getElementById('canvas');
var ctx=canvas.getContext('2d');
函数环面(度){
返回度*数学PI/180;
}
职能部门(ctx、opt){
ctx.beginPath();
ctx.moveTo(options.x0,options.y0);
ctx.弧(options.x0,options.y0,options.radius,toRadians(options.direction-options.sight/2),toRadians(options.direction+options.sight/2));
ctx.lineTo(options.x0,options.y0);
ctx.closePath();
var grad_x0=options.x0+options.radius*Math.cos(toRadians(options.direction));
var grad_y0=options.y0+options.radius*Math.sin(toRadians(options.direction));
var gradient=ctx.createRadialGradient(梯度x0,梯度y0,options.radius,options.x0,options.y0,0);
渐变。添加颜色停止(0,'白色');
渐变。添加颜色停止(0.8,#2287B9FF');
//渐变。添加颜色停止(1,'rgba(92141255,0.2');
ctx.fillStyle=渐变;
ctx.fill();
}
牵引扇区(ctx)

该错误是由于将渐变坐标从双精度转换为浮点值的错误造成的,可以通过强制径向渐变坐标为Int32s来修复

按位或带0将从JS Number转换为Int32(有符号整数32位),并修复该问题

var gradient = ctx.createRadialGradient(
    grad_x0 | 0, 
    grad_y0 | 0, 
    options.radius | 0, 
    options.x0 | 0, 
    options.y0 | 0, 
    0
);

对我来说很好,Firefox 56.0.2.在移动FF 57.0和chrome中都很好。。。FF 43中的视图框为空。不过,我记得旧版本的Firefox中也存在类似问题:如果太多的线条画得太近,就会出现类似的情况。我认为你对此无能为力……这显然是Firefox(包括v58)中的一个bug。考虑一下(现在似乎没有任何关于这个的报告)。可以找到它。