如果使用clone()方法克隆fabric.Path对象,则不会复制路径对象。我在这里看到过这个问题 https://github.com/kangax/fabric.js/issues/330但Fabric js的版本不同。 有人可以帮我这个。
var obj = canvas.getActiveObject();
if (!obj) return;
var clone = obj.clone();
clone.set({
top: clone.get('top') + 150
});
canvas.add(clone);
canvas.renderAll();
以下是我得到的错误。
else {
fabric.util.enlivenObjects(object.paths, function(enlivenedObjects) {
delete object.paths;
callback(new fabric.PathGroup(enlivenedObjects, object));
****Uncaught TypeError: undefined is not a function****
});
}
};
上面的代码适用于所有对象,但代码不适用于Path Object
答案 0 :(得分:6)
fabric.Path
和fabric.PathGroup
对象是异步的。
因此,您必须区分异步和同步对象。
var obj = canvas.getActiveObject();
if (!obj) return;
if (fabric.util.getKlass(obj.type).async) {
obj.clone(function (clone) {
clone.set({left: 200, top: 100});
canvas.add(clone);
});
}
else {
canvas.add(obj.clone().set({left: 100, top: 100}));
}
在这里你可以看到它的实际效果: http://jsfiddle.net/Kienz/73Cta/