繁体   English   中英

加载fabric.js JSON后位置错误

[英]Bad position after loading fabric.js JSON

从数据库加载JSON后,即使在JSON中, topleft属性的值都不是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)显示的对象表示形式具有topleft右值,MyImage也会显示在(0,0)而不是top = 191left = 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM