2017-08-17 24 views
1

SVGをグループから置き換えようとしています(または削除して新しいグループを追加しようとしていますが、機能しません)。FabricJSのグループからオブジェクトを削除/置換する

var group = new fabric.Group([svg, text], {options}); 

canvas.remove(svg); // not working 

group.getObjects()[0] = my_new_svg; // not working 

group.forEachObject(function(o) { // not working 
    if (is_svg_object) { 
     canvas.remove(o); 
    } 
}); 

私はversion 1.6.4を使用して、それは本当に細かい作業だ:これらは、私はすでに試した方法です。しかし、今、私は最新のリリース1.7.17に移行しており、この問題があります。

このリリースでは、プロパティを直接設定できないため、このメソッドを使用する必要があります。

object.setTextBackgroundColor(color); // works 

object.textBackgroundColor = color; // works in 1.6, not in 1.7.17 

私はこの問題が関連していると考えています。 ありがとう!

答えて

2

最近、1.7.x以降で多くのことを考慮する必要があります。

1)デフォルトでオブジェクトキャッシュを取得します。これは、何かが変化したときにファブリックがオブジェクトをペイントすることを意味します。

http://fabricjs.com/fabric-object-caching

2)あなたは、3つの方法で解決することができる効果的な変更を行うに:それは説明をよりよく明確にするために頼むdoesntの場合、それは、理にかなってまで、あなたはこれを読むべき

をセッターを使用します方法あなたが説明するように(.set('textBackgroundColor', color)バージョンではより良い)

フラグ(真object.set(「汚い」、))変更後の汚れなどのオブジェクト

無効O bjectCaching(示唆されていない)

3)グループからオブジェクトを削除する正しい方法は

var group = new fabric.Group([svg, text], {options}); 

group.remove(svg); 

group.addWithUpdate(my_new_svg); 

group.moveTo(my_new_svg, 0); 

が動作していないものを見ると、なぜあなたは、より良い答えを与えるだろう正直に言うとです。

+0

ありがとう@AndreaBogazzi、私はこの問題を解決することができます、私はいくつかのものをリファクタリングしなければなりませんでしたが、それらのほとんどはプロパティとオブジェクトのキャッシュを設定する新しい方法に関連していました!私は1.7のリリースノートを見直す必要があります!ありがとう:) – mauriblint

+0

重要なプロダクション環境にいない場合は、この時点で2.0ベータ版から直接起動してください。 – AndreaBogazzi

+0

私はあなたのアドバイスを受け取りますが、1.7.Xとベータ2の間には大きな相違はないと述べましたか? – mauriblint

関連する問題