2

次を含む Raphael set1 があるとします。 - rect (r1) - rect のセット (set2) - 空のセット (set3)。

Raphael では、element.getBBox() は set2 に対して正常に機能します。ただし、set1 の場合は NaN が返されます (x2、y2、幅、高さの場合 - ただし、正常に動作する x と y の場合は返されません)。ただし、set1 には r1 と set2 も含まれているため、幅と高さがあります。

set3.getBBox().y2 は -Infinity を返します。

空のセットを含むセットの「実際の」 getBBox() を取得するのに役立つ小さな関数をコーディングしましたが、かなり複雑です。これを解決するもっと簡単な方法があると確信していますが、十分なjsを知りません。また、私のコードには、まだ見ていないいくつかの問題があると思われます。何か案は?ありがとう!

function newBBox(e){
    function clean(s){
        for (var i=s.length-1; i>=0; i--){
            if (isNaN(s[i].getBBox().y2)) s[i] = clean(s[i])
            else if (s[i].getBBox().y2 == -Infinity) s.exclude(s[i]);
            };
        return s;
        }
    if (!isNaN(e.getBBox().y2)) return e.getBBox();
    // if not ok, e must be a set that at some point contains an empty set. Lets find it, exclude it and return the getBBox for the new set
    return clean(e.clone()).getBBox(); // can´t use e because its a pointer to the original set and we'll be excluding things from the set
    }
4

0 に答える 0