3

fabric.Path オブジェクトが clone() メソッドで複製される場合、パス オブジェクトは複製されません。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****
  });
 }
};

上記のコードはすべてのオブジェクトでうまく機能しますが、コードはパス オブジェクトでは機能しません

4

1 に答える 1

6

fabric.Pathオブジェクトはfabric.jsfabric.PathGroupバージョン 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/

于 2013-08-16T06:57:06.653 に答える