【发布时间】:2017-12-17 10:34:12
【问题描述】:
一旦我从数据库加载 JSON,一些对象的位置是 (0,0),即使在 JSON 中 top 和 left 属性的值不是 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 represantation of MyImage
在通过 canvas.loadFromJSON(data, canvas.renderAll.bind(canvas)); 加载此 JSON 后,MyImage 显示在 (0,0) 而不是 top = 191 和 left = 271 即使 console.log(instanceOfMyImage) 显示的对象表示具有正确的 top 和left。为什么?画布是否在设置属性之前渲染对象?但是显示图像,因此设置了属性......
我注意到fabric.Image 的实例运行良好。我的实现中的错误在哪里?
【问题讨论】:
标签: javascript json html5-canvas fabricjs