Javascript 加载fabric.JSON后位置不正确
从数据库加载JSON后,即使在JSON中Javascript 加载fabric.JSON后位置不正确,javascript,json,html5-canvas,fabricjs,Javascript,Json,Html5 Canvas,Fabricjs,从数据库加载JSON后,即使在JSON中top和left属性的值不是0,某些对象的位置也是(0,0)。 我有一个自定义类,它具有来自MyElement对象的附加属性: var MyElement = { contextMenu: ['delete'], toObject() { return { contextMenu: this.contextMenu }; } }; var MyImage = fabric.ut
top
和left
属性的值不是0,某些对象的位置也是(0,0)。
我有一个自定义类,它具有来自MyElement
对象的附加属性:
var MyElement = {
contextMenu: ['delete'],
toObject() {
return {
contextMenu: this.contextMenu
};
}
};
var MyImage = fabric.util.createClass(fabric.Image, MyElement, {
type: 'MyImage',
toObject(propertiesToInclude) {
return this.callSuper('toObject', Object.assign(propertiesToInclude, MyElement.toObject.apply(this)));
}
});
MyImage.fromURL = function(url, callback, imgOptions) {
fabric.util.loadImage(url, function(img) {
callback && callback(new MyImage(img, imgOptions));
}, null, imgOptions && imgOptions.crossOrigin);
};
fabric.MyImage = MyImage;
fabric.MyImage.fromObject = function(object, callback) {
fabric.util.loadImage(object.src, function(img) {
callback && callback(new fabric.MyImage(img, object));
});
};
数据库中的JSON如下所示:
在通过以下方式加载此JSON之后:canvas.loadFromJSON(数据,canvas.renderal.bind(canvas))
MyImage显示在(0,0)处,而不是top=191
和left=271
,即使console.log(instanceOfMyImage)
显示的对象表示具有top
和left
的右值。为什么?画布是否在设置属性之前渲染对象?但是图像被显示,所以属性被设置。。。
我注意到,
fabric.Image
的实例运行良好。我的实现中的错误在哪里?我在代码中找到了解决方案和错误。我需要编写一个initialize
方法,其签名与fabric.Image
中的签名相同,并且可以正常工作。下面是丢失的代码:
initialize: function(element, options, callback) {
this.callSuper('initialize', options);
this._initElement(element, options, callback);
},