我想沿着一條彎曲的路徑爲一條路徑(實際上是一組路徑,但我會做到這一點)製作動畫。raphaelJS 2.1沿着路徑動畫
RaphaelJS 2刪除了animateAlong
方法,原因我一直無法辨別。挖掘到拉斐爾文檔的gears demo爲抽象的Zevan,我有這麼遠:
//adding a custom attribute to Raphael
(function() {
Raphael.fn.addGuides = function() {
this.ca.guide = function(g) {
return {
guide: g
};
};
this.ca.along = function(percent) {
var g = this.attr("guide");
var len = g.getTotalLength();
var point = g.getPointAtLength(percent * len);
var t = {
transform: "t" + [point.x, point.y]
};
return t;
};
};
})();
var paper = Raphael("container", 600, 600);
paper.addGuides();
// the paths
var circ1 = paper.circle(50, 150, 40);
var circ2 = paper.circle(150, 150, 40);
var circ3 = paper.circle(250, 150, 40);
var circ4 = paper.circle(350, 150, 40);
var arc1 = paper.path("M179,204c22.667-7,37,5,38,9").attr({'stroke-width': '2', 'stroke': 'red'});
// the animation
// works but not at the right place
circ3.attr({guide : arc1, along : 1})
.animate({along : 0}, 2000, "linear");
我想第三個圓沿紅色路徑動畫。 現在它動畫,但距紅色路徑的距離等於第三個圓的原始座標。奇怪的是,不管along
對象中的變換translate
是相對(小寫「t」)還是絕對(大寫「T」),都會發生這種情況。即使我在animate
調用之前通過轉換轉換將其微調,它也始終在同一個位置進行動畫處理。
任何幫助非常感謝。我剛剛在矢量地方下船。指針是有幫助的 - 工作小提琴甚至更好。
輝煌,凱文。很簡單。謝謝!有一件事:你能解釋一下變換的「...」,「append」/'prepend'語法嗎?這些文檔幾乎沒有耳語。我無法確切知道它的用途。 – Ben
拉斐爾的參考資料並不需要認真檢修,恐怕。 append/prepend實際上非常有用,特別是在處理可能在不同位置單獨轉換的路徑時。實質上,它可以讓您將特定的轉換插入到現有的轉換鏈中,而不會將其他轉換刪除。例如,如果您有一個已經具有「R45 0,0 S2,2」變換的元素,則預先設定「T100,100 ...」將導致「T100,100 R45 0,0 S2」的累積變換, 2「,並附加它將導致」R45 0,0 S2,0 T100,100「 - 不同的結果。 –
非常好,謝謝。是的,我看到德米特里上週在twitter上吹噓說他拒絕了兩個提供寫Raphael書的提議。 「不喜歡寫」。也許你應該寫那本書?我會買副本:) – Ben