0

我正在开发一些类似插件的代码,以简化将 Raphael 路径移动到固定位置的过程。

通常,Raphael 路径的第一部分(使用基于 SVG 语法的语法)是一个“M”moveto 命令,用于定义路径的原点。

两个密切相关的问题:

  1. 假设任何任意路径都以“M”moveto 命令开头是否合理?(我怀疑答案是否定的)
  2. 假设 Q1 为“否”。上面,在遇到一个不以'M'(somePath.attr(path)[0][0] != 'M')开头的Raphael路径数组时,是否可以假设该路径的原点将始终为0,0?因此,从 0,0 开始的任何移动都将来自过去的转换,因此将在somePath.attr(transform)?

从 Raphael 文档看来,Path 数组的规范中似乎没有任何内容与 2. 相矛盾,但在做出假设之前总是值得检查意外情况。


换句话说,在任何情况下,此函数都不会为 Raphael 路径原点返回正确的 X 和 Y 坐标(假设它传递somePath.attr('path')了有效 Raphael 路径的输出):

function getPathOrigin (path) {
    if (path[0][0] == 'M') {
        return {x: path[0][1], y: path[0][2]}
    } else {
        return {x: 0, y: 0}
    }
}
4

1 回答 1

3

根据规范,路径必须以 moveto 命令开始。

于 2013-03-05T19:04:34.243 回答