2013-08-16 3 views
3

fabric.Path 객체가 clone() 메소드로 복제 된 경우 경로 객체는 복제되지 않습니다. 이 문제는 여기에서 보았습니다 https://github.com/kangax/fabric.js/issues/330하지만 Fabric js의 버전이 다릅니다. 좀 도와주세요.Fabricjs의 최신 버전이있는 경로 객체에 대해 clone()이 작동하지 않습니다.

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**** 
    }); 
} 
}; 

위의 코드는 모든 객체에 대해 잘 작동하지만 코드는

답변

6

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/

+0

신난다 !! 고마워 Kienz – John

관련 문제