【问题标题】:Raphael.js how to set attribute for a path?Raphael.js 如何为路径设置属性?
【发布时间】:2011-08-13 22:25:04
【问题描述】:

在Raphael.js中,如果我有一个路径对象,我想重置属性,怎么做?

myPath.attr('M', VALUE_FOR_M)
      .attr('L', VALUE_FOR_L);

好像不行……

【问题讨论】:

  • @Joachim,我为什么不这么认为????当然我知道 Raphael 不是 jQuery。 Raphael 还提供了 attr() 方法来设置元素的属性。如果您在其官方网站上查看 Raphael 文档。 raphaeljs.com/reference.html#attr
  • 但是,阅读链接文档显示ML 未列在可能的参数中。
  • 是的,这就是为什么我在这里问如何为路径设置属性,因为没有参考。
  • 据我了解ML 不是路径的属性,它们只是可以存在于其规范中的元素。它们也可以存在多次,因此“改变它们的值”并没有多大意义。你能发布一个你想要实现的例子吗?

标签: javascript raphael


【解决方案1】:

你这样做:

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 是一个 pathString(参见 SVG path string format

【讨论】:

  • 这似乎是一个更好的解决方案,您不会丢失在创建路径时已保存到路径中的任何其他属性。
  • 你真的可以像那样使用数组吗?或者你必须.join(' ')它来制作一个字符串?
  • @TimErickson 两者都被转换为字符串。不同之处仅在于隐式转换将导致逗号分隔的值字符串和您的解决方案在空格分隔的值字符串中。 “M,1,1,L,1,1”与“M 1 1 L 1 1”
【解决方案2】:

我更喜欢创建路径,

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);

这是你想做的吗?

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多