Fabric.js颜色在子类fabric.Group中变为黑色

时间:2016-11-02 23:47:22

标签: fabricjs

我正在尝试将fabric.Group子类化并将JSON字符串加载到其中。 我遇到的问题是fabric.Rect在子类组中的颜色变为黑色。 当我直接在fabric.Group中这样做时,它很棒。 我一直在使用fromObject的变体,但我似乎无法弄清楚我做错了什么。 这种变化似乎发生在我"活跃的时候。组中的对象。

这是一个表明我的问题的小提琴https://jsfiddle.net/adgu/49feomm7/
点击"加载组"按钮看到红色矩形(这是正确的)和"加载自定义组"按钮看黑色矩形。 JSON是相同的,除了类型为' group'在一个案例和' customGroup'在另一个。

fabric.CustomGroup = fabric.util.createClass(fabric.Group, {

  type: 'customGroup',

  initialize: function(objects, options) {
    options || (options = { });    
    //console.log('initialize objects', objects);
    //console.log('initialize options', options);
    this.callSuper('initialize', objects, options);    
  },

  toObject: function() {
    return fabric.util.object.extend(this.callSuper('toObject'), {
    });
  },

  _render: function(ctx) {
    this.callSuper('_render', ctx);
  }
});

fabric.CustomGroup.fromObject = function(object, callback) {   
   //console.log('fromObject', object);
   var _enlivenedObjects;
   fabric.util.enlivenObjects(object.objects, function (enlivenedObjects) {
      //console.log('enlivenObjects object', object);
      //console.log('enlivenObjects object.objects', object.objects);      
      //console.log('enlivenObjects enlivenedObjects', enlivenedObjects);
      delete object.objects;    
      _enlivenedObjects = enlivenedObjects;
   });
   return new fabric.CustomGroup(_enlivenedObjects, object);   
};

1 个答案:

答案 0 :(得分:0)

我发现了一个解决我的问题的封闭式错误报告:https://github.com/kangax/fabric.js/issues/3156

通过将true添加到initialize callSuper的末尾,它开始工作。像这样:

this.callSuper('initialize', objects, options, true);