Javascript RaphaelJS 2.1与1.5.2 getBBox错误
我正在尝试创建一个类似于的可拖动图形(适用于1.5.2和2.1),但我希望在框中包含文本 我在另一个问题中使用建议添加了文本: 此解决方案在RaphaelJS 1.5.2中非常有效,但在RaphaelJS 2.1中出现了中断 jsFiddle示例: 我发现的唯一区别是Javascript RaphaelJS 2.1与1.5.2 getBBox错误,javascript,raphael,Javascript,Raphael,我正在尝试创建一个类似于的可拖动图形(适用于1.5.2和2.1),但我希望在框中包含文本 我在另一个问题中使用建议添加了文本: 此解决方案在RaphaelJS 1.5.2中非常有效,但在RaphaelJS 2.1中出现了中断 jsFiddle示例: 我发现的唯一区别是Element.getBBox()返回一个非常不同的结果 示例: 在1.5.2中: 在2.1中: 我是否遗漏了从v1.5到v2的更改,或者这个奇怪的BBox是一个bug?有没有办法解决这个问题 谢谢 看来有人试图用Raphael中的
Element.getBBox()
返回一个非常不同的结果
示例:
在1.5.2中:
在2.1中:
我是否遗漏了从v1.5到v2的更改,或者这个奇怪的BBox是一个bug?有没有办法解决这个问题
谢谢 看来有人试图用Raphael中的自定义实现取代原生方法
getBBox
。
这背后的原因可能是本机getBBox方法有一些bug,并且它会返回一些形状的不正确结果。另一个原因可能是浏览器的可移植性,我不确定VML中是否有getBBox方法
然而,从您指出的值来看,这个定制实现似乎有其缺陷。
您可以将Raphael 2.x中的本机getBBox与以下代码一起使用:
var bb1 = obj1.node.getBBox(),
bb2 = obj2.node.getBBox(),
我对它进行了测试,看起来不错:Raphael 2 getBBox可能有点问题,但在您的情况下,您的数据是错误的。尝试删除数字周围的“符号”: 好榜样
(请注意,另一个解决方案在VML中被破坏)如果您将BBox与转换结合使用,Raphael确实存在错误。 我找到了一个适合我的方法 raphael.js中的第1300行
安德烈亚斯的答案是正确的 也参考了 如果您需要在内部更改getBBox()函数时多次重复使用它,克隆是正确的修复方法
顺便说一句:感谢Dimitry for Raphael.js,这真是一件了不起的工作!!我在答案被接受后才来到这里,但我仍然有一些问题。如果你和我一样,你可能想从Raphael.js GitHub上获取最新的开发版本:
Raphael似乎采纳了Andreas的答案(在1972行,而不是在写答案时的1300行)。Raphael的最新开发版本对我有效。我克隆了bbox!原因:bbox将从Raphael内部重用。在这种情况下,代码的不同部分修改了同一对象。
Object
height: 500780.9482062537
width: 1009980
x: 526.51
x2: 1010506.51
y: -399735.94795512746
y2: 101045.00025112627
var bb1 = obj1.node.getBBox(),
bb2 = obj2.node.getBBox(),
var pathDimensions = R.pathBBox = function (path) {
var pth = paths(path);
if (pth.bbox) {
return clone(pth.bbox) ; // FREEGROUP FIX!!!!!!
}
if (!path) {
return {x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0};
}