私はFabricJSを使用してキャンバスにオブジェクトをコピー&ペーストしようとしています:号(コピー&ペースト)
コピーした項目がオブジェクトであるとき、私はそれが完璧に働いて得ることができます。しかし、アイテムがグループである場合、それは崩れます。
私はこのフィドル(私が知っている混乱)をまとめましたが、より大きな、より組織化されたスクリプト(問題を再現するのに十分です)のいくつかの異なる部分をまとめました。選択したサークルで
https://jsfiddle.net/chrissp26/xxd6h80t/
ペーストボタンを押すと、それがオフセット5pxのでオブジェクトのクローンをコピーして貼り付けます。完璧。
2つあるので、両方を選択して同じことを試してください。元の円は消え、複製された円は消えたり移動したりした後、???ここで
ペースト機能は次のとおりです。()関数は、最近いくつかの変更を受けている
var _paste = function() {
var activeObject = _canvas.getActiveObject(),
activeGroup = _canvas.getActiveGroup();
if (_clipboard.objects) {
var group = new fabric.Group();
for (var i in _clipboard.objects) {
var object = fabric.util.object.clone(_clipboard.objects[i]);
group.addWithUpdate(object);
}
group
.set("top", _clipboard.top + 5)
.set("left", _clipboard.left + 5)
.setCoords();
_canvas
.setActiveGroup(group)
.add(group);
} else {
var object = fabric.util.object.clone(_clipboard);
object
.set("top", _clipboard.top + 5)
.set("left", _clipboard.left + 5)
.setCoords();
_canvas
.add(object)
.setActiveObject(object)
.renderAll();
}
}
以下のように素晴らしいことだ。つまり、アクティブとして設定し、私は一つだけ問題がある、それはエラーをスローします。 Uncaught TypeError:未定義(...)のプロパティ 'tl'を読み取ることができません これを回避する方法はありますか? –
私はまた、クローンオブジェクトを変更すると元の...クローン作成後にサイズを変更しようとすると、両方とも変更されますか? –
あなたが正しいです、それをより完全にテストしたはずです! Clone()メソッドは深いクローニングを行いますが、fabric.util.object.cloneは浅いクローンのみを行います。 –