我正在对象的缩放事件上实现对画布边缘的捕捉。 为了将它捕捉到画布的左边缘,我必须将左边的位置设置为等于画布的左边。我还必须在宽度上加上我移动对象的数量。
奇怪的是,只需设置新的左侧位置,有时我的对象会缩小/增长。
是不是因为面料在引擎盖下做了某种缩放?如果我将偏移量添加到我的宽度以使对象保持正确的大小,则奇怪的行为会变得更加明显。
threshold = 5;
_fabric.on('object:scaling', handleScaled);
function handleScaled(event) {
const shape = event.target && event.target.shape;
const shapeSize = shape.left + shape.width;
const snapeAmnt = Math.abs(screenSize - shapeSize);
if (Math.abs(screenSize - shapeSize) > threshold) {
shape.width += snapeAmnt;
}
}