2012-04-26 42 views
1

我正在使用以下代码来绘制(和设置动画)带RaphaelJS的圆弧路径;将文本元素与圆弧一起移动RaphaelJS

self.paper = Raphael(domElement, width, height); 

    self.paper.customAttributes.arc = function (xloc, yloc, value, total, R) { 
     var alpha = 360/total * value, 
      a = (90 - alpha) * Math.PI/180, 
      x = xloc + R * Math.cos(a), 
      y = yloc - R * Math.sin(a), 
      path; 
     if (total == value) { 
      path = [ 
       ["M", xloc, yloc - R], 
       ["A", R, R, 0, 1, 1, xloc - 0.01, yloc - R] 
      ]; 
     } 
     else { 
      path = [ 
       ["M", xloc, yloc - R], 
       ["A", R, R, 0, +(alpha > 180), 1, x, y] 
      ]; 
     } 
     return { path: path }; 
    }; 

    self.arc = self.paper.path().attr({ 
     'fill':    'none', 
     'stroke':   self.color, 
     'stroke-opacity': 1, 
     'stroke-width':  self.barWidth, 
     'arc':    [self.centerX, self.centerY, 0, 100, position] 
    }; 

    self.arc.animate({ 
     'arc': [self.centerX, self.centerY, domein.kennis, 100, position] 
    }, self.duration, 'backOut'); 

现在文本标签需要随着弧线一起移动。我在解决如何沿弧的路径移动文本元素时遇到问题。任何帮助,将不胜感激。

编辑:问题是正确定位文本元素;

see this question/jsfiddle

+0

您可以手动完成:http://phrogz.net/svg/animation_on_a_curve.html – Phrogz 2012-04-27 12:29:17

回答

1

使用拉斐尔的animateWith()对文本元素的动画与圆弧的动画链接。

+0

animateWith:与Element.animate类似的行为,但确保给定的动画与另一个给定元素同步运行。那么怎样才能解决定位文本元素的问题? – ec30 2012-05-07 09:07:20

+0

@ ec30为什么不会使用链接问题中演示的小提琴? – 2012-05-07 09:22:43

+0

这是我的小提琴和我的问题:)重点是文字元素必须重新定位,以便它在弧线前 – ec30 2012-05-08 08:38:53