2012-04-09 15 views
2

http://raphaeljs.com/graffle.html(1.5.2と2.1の両方で動作します)に似たドラッグ可能なグラフを作成しようとしていますが、ボックスにテキストを含めたいとします。RaphaelJS 2.1 vs. 1.5.2 getBBoxエラー

私は別の質問で提案を使用してテキストを追加しました:How can I combine objects in the Raphael javascript library?

このソリューションは、RaphaelJS 1.5.2との素晴らしい作品が、それはRaphaelJS 2.1で破ります。

jsFiddle例:http://jsfiddle.net/ScBtZ/

私が見つけた唯一の違いは、Element.getBBox()は非常に異なる結果を返すということです。

サンプル:1.5.2で

2.1で

SVGRect 
    height: 40 
    width: 100 
    x: 526.5 
    y: 25 

Object 
    height: 500780.9482062537 
    width: 1009980 
    x: 526.51 
    x2: 1010506.51 
    y: -399735.94795512746 
    y2: 101045.00025112627 

は私がV1からの変更についての何かをしないのです。 5〜v2、またはこれです奇妙なBBoxバグ?どのように私はこの問題を解決することができます任意のアイデア?

ありがとうございます!

答えて

1

まあ、ネイティブメソッドgetBBoxをRaphaelのカスタム実装に置き換えようとしたようです。 これは、ネイティブのgetBBoxメソッドにいくつかのバグがあり、いくつかのシェイプで不適切な結果を返すことが原因です。別の理由は、ブラウザの移植性かもしれない、私はVMLにgetBBoxメソッドがあるかどうかわからない。

しかし、あなたが指摘した値から、このカスタム実装には欠陥があるようです。 あなたは、このコードでラファエル2.xでネイティブgetBBoxを使用することができます。

var bb1 = obj1.node.getBBox(), 
    bb2 = obj2.node.getBBox(), 

私はそれをテストし、よさそうだ:http://jsfiddle.net/ScBtZ/2/

2

ラファエル2 getBBoxは少しバグがあるかもしれないが、あなたの場合には、あなたのデータがあります違う。 「数字の周りを削除してください:!

http://jsfiddle.net/nhatcher/ScBtZ/9/

良い例

(他のソリューションは、VMLで壊れていることに注意してください)

1

あなたはにBBoxを使用している場合、ラファエルはバグを持っていました変換と組み合わせて 私のために働く修正を見つけました。

ライン1300 inラパエル。JS

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}; 
    } 
+0

私はbboxをクローンします!理由:bboxは、ラファエルから内部的に再利用されます。この場合、コードの異なる部分が同じオブジェクトを変更します。 –

0

Andreasの答えは正しいです...また、uはgetBBoxを(再利用する必要がある場合は、クローンが右の修正ですhttps://github.com/DmitryBaranovskiy/raphael/issues/543

)でreffered

はのカップルよりも多くの機能します時間は内部的に変更されます....

BTW:Raphael.jsのDimitryに感謝、その本当に素晴らしい作品!

2

私は答えが受け入れられた後にここに来ましたが、私はまだいくつかの問題を抱えていました。あなたが私に似ている場合は、Raphaël.jsのGitHubののオフ最新のdevのバージョンを取得したいことがあります。 https://github.com/DmitryBaranovskiy/raphael/

ラファエル時にそうであったように、ライン1972、いない1300年に(Andreasの答えが組み込まれているようです答えが書かれた)。 Raphaelの最新のdevのリリースが私のために働いた。

関連する問題