【问题标题】:clone() is not working for Path Object with the latest version of Fabricjs使用最新版本的 Fabricjs,clone() 不适用于路径对象
【发布时间】:2013-08-16 14:57:06
【问题描述】:

如果使用 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****
  });
 }
};

以上代码适用于所有对象,但代码不适用于路径对象

【问题讨论】:

    标签: fabricjs


    【解决方案1】:

    fabric.Pathfabric.PathGroup 对象是异步的,因为 fabric.js 版本 1.2.2 (https://github.com/kangax/fabric.js/commit/c8cab03aace5510554cd02fa143248ab7497f6c2)。

    所以你必须区分异步和同步对象。

    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/

    【讨论】:

    • 太棒了!非常感谢 Kienz
    猜你喜欢
    • 2018-12-26
    • 2011-07-12
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多