新しいfabric.MyObject
を作成したいだけですが、それは単にfabric.Object
ですが、いくつかの特殊な小道具と方法があります。だからinitialize
をfabric.Object
に呼び出しても問題ないです。fabric.MyObject
を作成しています。fabricJSオブジェクトで複数の継承を実現するにはどうすればよいですか?
MyRect
、MyCircle
などのような特殊な形状を持っていて、それはMyObject
から継承する必要があります。これは、そのスペシャルを共有する必要があります。
私はfabric.Rect
から継承し、またfabric.Rect
ようMyObject
の小道具を使用するだけでfabric.Object
から継承(と私は「普通の」rectsを必要とするかもしれないと私はそれを変更したくないたとえばMyRect
のために作る方法についてstruggelingよ同じように)。
いくつかのヒントをいただければ幸いです:)
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) {
\t this.callSuper("initialize", fabric.util.object.extend({
\t 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",
\t
initialize: function (options) {
\t //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;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.4/fabric.min.js"></script>
<canvas id="c" width="400" height="300"></canvas>
実際にこれを行う方法が実際にない場合は、githubで確認します。 – Fidel90
また、クラス作成ファイルをレポのRectからコピーして、代わりに独自のオブジェクトクラスに渡すこともできます。私たちは、私たちのプロジェクトでこれほどのことをしました。 – StefanHayden