我想沿着弯曲的路径为路径(实际上是一组路径,但我会谈到)设置动画。
RaphaelJS 2 删除了该animateAlong
方法,原因我无法辨别。深入研究由Zevan抽象的 Raphael 文档的gears 演示,我已经做到了这一点:
//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");
我希望第三个圆圈沿红色路径设置动画。它现在正在制作动画,但距离红色路径的距离等于第三个圆圈的原始坐标。奇怪的是,无论对象中的变换是相对的(小写的“t”)还是绝对的(大写的“T”),都会发生这种translate
情况along
。它也总是在同一个位置进行动画处理,即使我在animate
调用之前用变换平移来轻推它。
非常感谢任何帮助。我刚在矢量陆地下船。指针很有帮助——一个工作小提琴更好。