我想创建一个新的fabric.MyObject
,它只是一个fabric.Object
,但有一些特殊的道具和方法。所以我创建的fabric.MyObject
只需在initialize
上调用fabric.Object
,一切都很好。
现在我希望有MyRect
,MyCircle
之类的特殊形状,应该从MyObject
继承,因为它们应该分享它所提供的特色。
我是如何制作例如MyRect
继承自fabric.Rect
而且使用MyObject
的道具fabric.Rect
只是继承自{{} 1}}(我不想改变它,因为我可能需要"正常" rects也是如此)。
一些提示将不胜感激:)
fabric.Object

var canvas = new fabric.Canvas("c");
//create new object that has some defaults changed
fabric.MyObject = fabric.util.createClass(fabric.Object, {
type: "myObject",
initialize: function (options) {
this.callSuper("initialize", fabric.util.object.extend({
hasControls: true,
cornerColor: "black",
transparentCorners: false,
hasBorders: false,
fill: "rgba(255,0,0,.5)",
stroke: "black",
perPixelTargetFind: true
}, options));
}
});
//create new rect that builds up on the custom MyObject
fabric.MyRect = fabric.util.createClass(fabric.Rect, {
type: "myRect",
initialize: function (options) {
//how can I make it work that fabric.Rect is not using fabric.Object but fabric.MyObject instead?
this.callSuper("initialize", options);
}
});
//creates just a "normal" rect
canvas.add(new fabric.MyRect({
left: 100,
top: 100,
width: 100,
height: 100
}));

canvas {
border: 1px solid;
}

答案 0 :(得分:2)
我认为没有一种直接的方法可以做到这一点。使用fabric.util.createClass
来调用fabric.Object
。
要么可以覆盖fabric.Object
中的值,要么创建一个包含一堆默认值的对象,并将其传递到所有fabric.MyRect
和fabric.MyCircle
类中。
如果你能做你提出的建议并且可能是feature you could propose to fabricjs directly,那将会很有趣。