我正在尝试将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);
};
答案 0 :(得分:0)
我发现了一个解决我的问题的封闭式错误报告:https://github.com/kangax/fabric.js/issues/3156
通过将true添加到initialize callSuper的末尾,它开始工作。像这样:
this.callSuper('initialize', objects, options, true);