Raphael.js如何为路径设置属性?

3
在 Raphael.js 中,如果我有一个路径对象,我想要重置属性,如何做到?
myPath.attr('M', VALUE_FOR_M)
      .attr('L', VALUE_FOR_L);

看起来好像不起作用...

1
@Joachim,我为什么不应该这样想????当然我知道Raphael不是jQuery。Raphael还提供attr()方法来设置元素属性。如果您在其官方网站上查看Raphael文档。http://raphaeljs.com/reference.html#attr - Mellon
然而,阅读链接的文档显示ML不在可能的参数列表中。 - Joachim Sauer
1
是的,这就是为什么我在这里问如何设置路径属性,因为没有参考资料。 - Mellon
1
据我所知,ML不是路径的属性,它们只是可以存在于其规范中的元素。它们也可以存在多次,因此“更改它们的值”并没有太多意义。您能发布一个您想要实现的示例吗? - Joachim Sauer
2个回答

6

你可以这样做:

var newPath = ["M", VALUE_FOR_M_X, VALUE_FOR_M_Y, 
               "L", VALUE_FOR_L_X, VALUE_FOR_L_Y];

myPath.attr({ path : newPath });

newPath是一个路径字符串(参见SVG路径字符串格式


这似乎是一个更好的解决方案,当它被创建时,您不会失去已保存在路径上的任何其他属性。 - Des Horsley
你能直接使用数组吗?还是必须使用.join(' ')将其转换为字符串? - Tim Erickson
1
@TimErickson,两者都被转换为字符串。唯一的区别在于隐式转换将得到逗号分隔的值字符串,而您的解决方案将得到用空格分隔的值字符串。 "M,1,1,L,1,1"与"M 1 1 L 1 1"。 - basecode

3

创建路径时,我更喜欢使用:

var myPath = paper.path(['M', M_VAL0, M_VAL1, 
                         'L', L_VAL0, L_VAL1].join(' '));
myPath.insertAfter(nodewhatever);

它使您的操作更易理解。

要更新您的路径,

myPath.remove();
myPath = paper.path(['M', M_VAL2, M_VAL3, 
                     'L', L_VAL2, L_VAL3].join(' '));
myPath.insertAfter(nodewhatever);

这是你想要做的吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接