0
私はキャンバスにsvgを追加しており、カスタム要素パラメータを設定したいと思います。私はログgetActiveObject()を操作するときにカスタムパラメータを表示しますが、canvas.toJSON()を使用すると、要素のパラメータノードの値は変更されません。カスタムパラメータがキャンバスをJsonにクリア
var canvas = new fabric.Canvas('designcontainer'),
/* Save additional attributes in Serialization */
var ElementParameters = {
ElementType:'',
imageType:'',
top:'',
left:'',
colors:'',
isBaseTier:'',
atLevel:''
};
fabric.Object.prototype.toObject = (function (toObject) {
return function() {
return fabric.util.object.extend(toObject.call(this), {
ElementParameters:{
ElementType:'',
imageType:'',
top:'',
left:'',
colors:'',
isBaseTier:'',
atLevel:''
},
});
};
})(fabric.Object.prototype.toObject);
/* End : Save additional attributes in Serialization */
var Designer = {
addElement: function(e,p){ /* e = element, image src | p = parameters set for image */
if(p.imageType == "svg"){
if(p.ElementType == "caketier"){
var group = [];
console.log('Before ');
console.log(ElementParameters);
$.extend(ElementParameters,p);
console.log('After ');
console.log(ElementParameters);
fabric.loadSVGFromURL(e,function(objects,options){
var shape = fabric.util.groupSVGElements(objects,options);
var bound = shape.getBoundingRect();
shape.set({
left: p.left,
top: p.top,
width:bound.width+2,
height:bound.height,
angle:0,
centeredScaling:true,
ElementParameters:ElementParameters
});
if(shape.paths && baseColor.length > 0){
for(var i = 0;i<shape.paths.length;i++) shape.paths[i].setFill(baseColor[i]);
}
canvas.add(shape);
shape.setControlsVisibility(HideControls);
canvas.renderAll();
},function(item, object) {
object.set('id',item.getAttribute('id'));
group.push(object);
});
}
}
}
}
$(".tierbox").on('click',function(){
var i = $(this).find('img'),
src = i.attr('src'),
param = i.data('parameters');
Designer.addElement(src,param);
});
ここでJSON.stringify(json)を呼び出すと、Element Parameterノードはshape.set()メソッドで設定された値で上書きされません。
ガット溶液にfabric.Object.prototype.toObject =(関数(toObject){...}を交換 fabric.Object.prototype.toObject =(関数(toObject)を{置き換えます.. } にfabric.Object.prototype.toObject =(関数(toObject){ 復帰機能(){\t 戻りfabric.util.object.extend(toObject.call(本)、{ \t ElementParameters。 this.ElementParameters } ); }; })(fabric.Object.prototype.toObject); – Snehalk