Javascript 如何向fabricjs对象添加名称?
为了按名称获取fabricjs画布图像,我需要将唯一id或名称设置为该图像。我创建了一个新类Javascript 如何向fabricjs对象添加名称?,javascript,canvas,fabricjs,Javascript,Canvas,Fabricjs,为了按名称获取fabricjs画布图像,我需要将唯一id或名称设置为该图像。我创建了一个新类fabric.NamedImage 我就是这样做的 fabric.NamedImage = fabric.util.createClass(fabric.Image, { type: 'nameimage', initialize: function (element, options) { this.callSuper('initialize', element, optio
fabric.NamedImage
我就是这样做的
fabric.NamedImage = fabric.util.createClass(fabric.Image, {
type: 'nameimage',
initialize: function (element, options) {
this.callSuper('initialize', element, options);
options && this.set('name', options.name);
},
toObject: function () {
return fabric.util.object.extend(this.callSuper('toObject'), { name: this.name });
},
_render: function (ctx) {
this.callSuper('_render', ctx);
}});
和fromObject
fabric.NamedImage.fromObject = function (object, callback) {
fabric.util.loadImage(object.src, function (img) {
var instance = new fabric.NamedImage(img, object);
callback && callback(instance);
});
};
fabric.NamedImage.async = true;
但由于某些原因,当我试图加载canvasloadFromJSON
时,我总是会出错
cannot read property 'async' of undefined
下面是我试图加载JSON的代码
for (i = 0; i <= canvas.length; i++) {
JSON.parse(imageQuery[i]);
canvas[i].loadFromJSON(imageQuery[i]);
canvas[i].renderAll();
console.log(' this is a callback. invoked when canvas is loaded!xxx ');
}
for(i=0;i请将类的type属性更改为'namedImage',它应该会消失。您可以使用下面给出的代码向fabric js中的不同对象添加自定义属性:
obj.toObject = (function (toObject) {
return function () {
return fabric.util.object.extend(toObject.call(this),{
id : value
});
};
})(obj.toObject);
这里obj是您创建的画布对象,id
是我们添加到此对象的自定义属性。
假设您已经以JSON文件的形式保存了画布,所以在使用JSON时,StrugTimes考虑下面的代码:
json_data = JSON.stringify(self.canvas.toJSON(['attribute1',
'attrubute2']));
方括号中包含所有自定义属性。稍后当您使用loadfromjson时,所有自定义属性都将自动包含。希望一切正常。祝您愉快!!来自官方文档
var rect = new fabric.Rect();
rect.toObject = (function(toObject) {
return function() {
return fabric.util.object.extend(toObject.call(this), {
name: this.name
});
};
})(rect.toObject);
canvas.add(rect);
rect.name = 'trololo';
console.log(JSON.stringify(canvas));
并且记录的输出将是
'{"objects":[{"type":"rect","left":0,"top":0,"width":0,"height":0,"fill":"rgb(0,0,0)","overlayFill":null,"stroke":null,"strokeWidth":1,"strokeDashArray":null,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"selectable":true,"hasControls":true,"hasBorders":true,"hasRotatingPoint":false,"transparentCorners":true,"perPixelTargetFind":false,"rx":0,"ry":0,"name":"trololo"}],"background":"rgba(0, 0, 0, 0)"}'
请参考这个
干杯!仍然无法处理相同的错误。我已将“nameimage”更改为“namedImage”