2017-09-07 7 views
0

ファブリックの出力に影響を与えずにテキストオブジェクトの影画像を取得しようとしています。fabricjsクローンオブジェクトは古い(デフォルト)オブジェクトに影響を与えます

コード

var clonedText = jQuery.extend({}, obj); 
clonedText.fill = "rgba(50,50,50,0.5)"; 
imageURL = clonedText.toDataURL({format:'png'}); 

結果

デフォルト:enter image description here AfterRun:それは固定することができますどのようにenter image description here

? カントがデフォルトイメージに影響を与えるようにオブジェクトをコピーするにはどうすればいいですか?

更新日:

これもこれを試しました。

canvas._objects.forEach(function(obj, index){ 
var clonedText = fabric.util.object.clone(obj); 
    clonedText.fill = "rgba(50,50,50,0.5)"; 
    imageURL = clonedText.toDataURL({format:'png'}); 
}); 

これは同じ結果です。

+0

? – Durga

+0

@AndreaBogazzi @AndreaBogazziは、親要素にも影響を与えるクローンオブジェクトの 'toDataURL'を取得した後、この[issue](https://jsfiddle.net/durga598/qn066wtz/)をチェックすることができます。 – Durga

答えて

2

JavaScriptオブジェクトを複製するようなインスタンスを実際に複製するべきではありません。 ファブリックオブジェクトは、キャンバス要素、イメージ要素、ディープ構造、およびすべてのクローンロジックへの参照を独自に処理できます。

enter image description here

:ドキュメント内

またhttp://fabricjs.com/docs/fabric.util.object.html

は、cloneメソッドを指定しますfabricjsのドキュメント上

はfabric.util.object.extende /クローンがないクローンfabricJSオブジェクトを行うことが規定されて

実行する必要があります

myText.clone(function(cloned) { 
    // do something with cloned.... 
}); 

フルsyncronousプロセスを必要としている、とあなたはも行うことができますテキストのパターンや画像のソースを使用していない場合:使用しているfabricjsのバージョン

var objectForm = myText.toObject(); 
var clonedText = new fabric.Text(objectForm.text, objectForm); 
+0

うん、まさに正しい。 –

関連する問題