fabricjsでのクリップボードの実装に関する問題が発生しています。グループをクローンすると、boundingBox/Controlsは正しい位置にありますが、オブジェクトはキャンバスの左上隅にスローされ、コントロールを移動することしかできません。ここで FabricJSクリップボードの実装(コピー/貼り付け)
は、これまでの私の実装です:これらのメソッドのvar canvas = new fabric.Canvas("c");
var clipboard = null;
function Copy() {
// Single Object
if(canvas.getActiveObject()) {
// Does this object require an async clone?
if(!fabric.util.getKlass(canvas.getActiveObject().type).async) {
clipboard = canvas.getActiveObject().clone();
} else {
canvas.getActiveObject().clone(function(clone) {
clipboard= clone;
});
}
}
// Group of Objects (all groups require async clone)
if(canvas.getActiveGroup()) {
canvas.getActiveGroup().clone(function(clone) {
clipboard = clone;
});
}
}
function Paste() {
// Do we have an object in our clipboard?
if(clipboard) {
// Lets see if we need to clone async
if(!fabric.util.getKlass(clipboard.type).async) {
var obj = clipboard.clone();
obj.setTop(obj.top += 10);
obj.setLeft(obj.left += 10);
canvas.add(obj);
// We do not need to clone async, all groups require async clone
canvas.setActiveObject(obj);
clipboard = obj;
} else {
clipboard.clone(function(clone) {
clone.setTop(clone.top += 10);
clone.setLeft(clone.left += 10);
canvas.add(clone);
// We need to clone async, but this doesnt mean its a group
if(clipboard.isType("group")) {
canvas.setActiveGroup(clone);
} else {
canvas.setActiveObject(clone);
}
clipboard = clone;
});
}
}
}
私の実装と私のロジックが冗長であるかもしれないし、その可能性は、これを行うのより良い、より小さく、より効率的な方法である(私に教えてください) 。
これはバグか間違っているかどうかわかりません。どのオブジェクトがクローンされるのか分からないので、非同期クローンを使用する必要があるかどうかを知る必要があります。これは、その方法だけです。
UPDATE:ここは問題(グループオブジェクトおよびコピー/貼り付け)
は、あなたが問題を解決しましたどのように動作するかです?あなたが指定したように、私はあなたのフィドルでどんな問題にも直面していません。 –
@ JayadrathaMondal私はグループをペーストしようとすると、私はすべてが壊れてコピーしました。 –