我有一個關於我在fabricjs中執行剪貼板的問題。當我克隆組時,邊界框/控件處於正確的位置,但對象被扔到畫布的左上角,我只能移動控件。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每當我嘗試粘貼一組時,我複製了所有的內容。 –