私のキャンバの中央に垂直線を作成しました。私はその形状を中心に水平に整列させていきます。もし彼が整列したくないならば)。FabricJSを中心にスナップする形状
私は私のJSFiddleに問題を抱えている:https://jsfiddle.net/z0u05hee/5/
問題は形状が移動したとき、それはラインの中央付近に遮断したままで、私はもうそれを得ることができないということです。ここで
は私FabricJSコードです:
var canvas = new fabric.Canvas('c', { selection: false });
var line9 = new fabric.Line([
canvas.width/2, 0,
canvas.width/2, canvas.width
],{
stroke: 'green',
})
line9.selectable = false;
line9.evented = false;
canvas.add(line9);
canvas.add(new fabric.Circle({
left: 10,
top: 100,
radius: 50,
fill: '#9f9',
originX: 'left',
originY: 'top',
centeredRotation: true
}));
canvas.on('object:moving', function(options) {
if (Math.round(options.target.left) < (canvas.width/2) - 15 ||
Math.round(options.target.left) > (canvas.width/2) + 15) {
options.target.set({
left: Math.round(canvas.width/2),
}).setCoords();
}
});
どのように私は私のコードを修正する必要がありますか?
UPDATE:
canvas.on('object:moving', function(options) {
if (Math.round(options.target.left) >= (canvas.getActiveObject().getWidth()) - 20 && Math.round(options.target.left) <= (canvas.getActiveObject().getWidth()) + 20) {
options.target.set({
left: (canvas.width/2) - canvas.getActiveObject().getWidth()/2,
}).setCoords();
}
});
これは動作しますが、私は形状の中心点の変更をスケーリングするときには、コーディネートです。
私はあなたが望む動作が何であるかを理解することができません。あなたはもう少し説明できますか? – jakeehoffmann
@jakeehoffmannはい、私は丸い形状が線に近づくといつでも中心に水平にスナップするようにします。ユーザーは、いつでも自分が望むたびに中心から形を離すことができます。 – Lindow