[英]Bad position after loading fabric.js JSON
从数据库加载JSON后,即使在JSON中, 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在这里: MyImage的JSON表示
然后通过以下canvas.loadFromJSON(data, canvas.renderAll.bind(canvas));
加载此JSON: canvas.loadFromJSON(data, canvas.renderAll.bind(canvas));
即使console.log(instanceOfMyImage)
显示的对象表示形式具有top
和left
右值,MyImage也会显示在(0,0)而不是top = 191
和left = 271
。 为什么? 画布是否在设置属性之前渲染对象? 但是显示了图像,因此设置了属性...我注意到fabric.Image
实例运行良好。 我的实现中的错误在哪里?
我在代码中找到了解决方案和一个错误。 我需要编写一个与fabric.Image
具有相同签名的initialize
方法,并且它可以工作。 在缺少的代码下面:
initialize: function(element, options, callback) {
this.callSuper('initialize', options);
this._initElement(element, options, callback);
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.