我不认为目前的拉斐尔API允许你设置比上一个,这是考虑到要传递给“不透明度” ATTR值之外的各个停止混浊,例如:
this.ellipse(x, y, r, r).attr({stroke: "none", fill: "r(.5,.1)#ccc-#ccc", opacity: 0})
...在最后一站将有一个不透光度0。对于更细粒度的控制我加入这个“案例”的属性,我raphael.js解析分支:
case "opacityStops":
if (attrs.gradient) {
var gradient = doc.getElementById(node.getAttribute(fillString)[rp](/^url\(#|\)$/g, E));
if (gradient) {
var stops = gradient.getElementsByTagName("stop");
var opacs=value.split("-");
for(var ii=0;ii<stops.length;ii++){
stops[ii][setAttribute]("stop-opacity", opacs[ii]||"1");
}
}
break;
}
您还必须在“availableAttrs”对象添加相应的条目,例如:
availableAttrs = {<other attrs here>..., opacityStops:"1"}
的呼叫建立与不同的不透明径向渐变的圆形,然后停止会是什么样子:
this.ellipse(x, y, r, r).attr({stroke: "none", fill: "r(.5,.5)#fff-#fff:70-#000", "opacityStops": "1-0-0.6"}
它看起来是这样的API已经不存在了。有关测试用例,请参阅http://jsfiddle.net/GuQA6/。 您不会碰巧知道用于改变色块不透明度的新API,是吗? – 2010-03-10 20:04:25