繁体   English   中英

Fabric.js-自定义的Fabric.Image类不适用于“ loadFromJSON”>“ fromObject”

[英]Fabric.js - customized Fabric.Image class don't work at “loadFromJSON”>“fromObject”

我想将自定义的Fabric.Image类保存为JSON,然后再使用loadFromJSON对其进行还原。

我已经查询了以下问题Fabric.js-如何在具有自定义属性的服务器上保存画布,但是似乎“ fromObject”的一部分运行不佳。

当您在下面的WEB页面上按下“单击”按钮时,就会发生这种情况。 https://onoderayuuki.github.io/tana_motif/index.html

[子类]

 fabric.customMotif = fabric.util.createClass(fabric.Image, {
  type: 'customMotif',
  borderColor: '#19310B',
  cornerColor: '#19310B',
  cornerSize: 20,

 initialize: function(src, options) {
   this.callSuper('initialize', options);
   options && this.set('name', options.name);
   this.image = new Image();
   this.top = options.top;
   this.left = options.left;
   this.image.src = src;
   this.image.onload = (function() {
     this.width = this.image.width;
     this.height = this.image.height;
     this.loaded = true;
     this.setCoords();
     this.fire('image:loaded');
   }).bind(this);
 },

  toObject: function(options) {
       return fabric.util.object.extend(this.callSuper('toObject'), {
       });
  },
  _render: function(ctx) {
   if (this.loaded) {
      ctx.drawImage(this.image, -this.width / 2, -this.height / 2);
   }
  }
});

fabric.customMotif.fromObject = function(object, callback) {
  fabric.util.loadImage(object.src, function(img) {
    callback && callback(new fabric.customMotif(img, object));
  });
};

[JSON]

  canvasState = JSON.stringify(canvas);
  canvas.loadFromJSON(canvasState);

谢谢。

如果选中此功能,则该类的第一个字母为大写。

getKlass: function(type, namespace) {
  // capitalize first letter only
  type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1));
  return fabric.util.resolveNamespace(namespace)[type];
},

将类从fabric.customMotif重命名为fabric.CustomMotif

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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