Raphaël的不透明度超出范围(负面)

时间:2012-09-26 16:38:39

标签: javascript raphael max

我有一个抛出JavaScript异常的页面:

Unhandled exception at line 5144, column 13 in raphael.js
0x80048270 - JavaScript runtime error: Arg: Fraction out of range (0 to 1 allowed)

我正在使用Raphaël的2.1.0版本,并且使用未压缩的JavaScript文件进行调试,而不是最小化的JavaScript文件(即从http://github.com/DmitryBaranovskiy/raphael/raw/master/raphael.js复制的文件)

如果我进入调试器(我正在使用Visual Studio 2012),我发现变量'opacity'的值是-0.23185589076263113,而它应该在0和1之间。但是我看不出它是怎么回事负。这是代码(来自raphael.js,即它的库代码而不是我的代码)

        opacity = mmin(mmax(opacity, 0), 1);
        params["stroke-width"] == null && (width = a["stroke-width"]);
        params["stroke-width"] && (stroke.weight = width);
        width && width < 1 && (opacity *= width) && (stroke.weight = 1);
        stroke.opacity = opacity;

当第一行显然将其限制为[0,1]时,如何在此代码的最后一行使用opacity == -0.23185589076263113?

(N.B。在raphael.js中mmax是math.max而mmin是math.min。)

1 个答案:

答案 0 :(得分:0)

找到它。

width && width < 1 && (opacity *= width) && (stroke.weight = 1); 
如果宽度为负,则

打破不透明度范围(在这种情况下,它是)。在我引用的块(5139)之前的行上设置宽度:

var width = (toFloat(params["stroke-width"]) || 1) * .75;

我需要调试我的代码,找出为什么params [“stroke-width”]是否定的,我建议Raphael防范:https://github.com/DmitryBaranovskiy/raphael/issues/623