简体   繁体   English

在fabricjs中克隆svg时出错

[英]Error when cloning svg in fabricjs

I am trying to clone several svgs from the same data, but when I apply a colour to one of them it also applies to the others as well. 我试图从相同的数据克隆几个svgs,但是当我将颜色应用于其中一个时,它也适用于其他数据。 I'm not sure I am cloning the svg correctly. 我不确定我是否正确克隆了svg。 Here is my code: 这是我的代码:

 var canvas = new fabric.Canvas('canvas'); var svgObject = null; fabric.loadSVGFromURL("http://fabricjs.com/assets/131.svg", function(objects, options) { svgObject = fabric.util.groupSVGElements(objects, options); var object1 = fabric.util.object.clone(svgObject); colourSVG(object1, "rgb(0,0,0)", "rgba(151,0,0,1)"); canvas.add(object1); var object2 = fabric.util.object.clone(svgObject); object2.top = 200; canvas.add(object2).renderAll(); }); function colourSVG(_obj, _keyColourString, _fillColourString){ if (!_obj.paths) { _obj.setFill(_fillColourString); } else if (_obj.paths) { for (var i = 0; i < _obj.paths.length; i++) { if(_obj.paths[i].fill === _keyColourString){ _obj.paths[i].setFill(_fillColourString); console.log("colour found"); } else{ console.log(_obj.paths[i].fill); } } } } 
 <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script> <canvas id="canvas" width="800" height="500" ></canvas> 

I think you were just cloning the objects incorrectly. 我认为你只是错误地克隆了对象。

 var canvas = new fabric.Canvas('canvas'); var svgObject = null; fabric.loadSVGFromURL("http://fabricjs.com/assets/131.svg", function(objects, options) { svgObject = fabric.util.groupSVGElements(objects, options); svgObject.clone(function(o) { colourSVG(o, "rgb(0,0,0)", "rgba(151,0,0,1)"); canvas.add(o); }); svgObject.clone(function(o) { o.top = 200; canvas.add(o); }); canvas.renderAll(); }); function colourSVG(_obj, _keyColourString, _fillColourString) { if (!_obj.paths) { _obj.setFill(_fillColourString); } else if (_obj.paths) { for (var i = 0; i < _obj.paths.length; i++) { if (_obj.paths[i].fill === _keyColourString) { _obj.paths[i].setFill(_fillColourString); console.log("colour found"); } else { console.log(_obj); console.log(_obj.paths[i].fill); } } } } 
 <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script> <canvas id="canvas" width="800" height="500"></canvas> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM