我不認爲目前的拉斐爾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