Fabric JS多对象选择忽略移动isDisabled



我已经为Fabric JS画布上的所有对象设置了以下属性。

lockMovementX: isDisabled,
lockMovementY: isDisabled,
lockScalingX: isDisabled,
lockScalingY: isDisabled,
lockUniScaling: isDisabled,
lockRotation: isDisabled,

然而,当我按住shift键选择多个对象时,这些对象会再次移动,但作为一个组,你知道我如何禁用这种可能性吗?

canvas.selection = false

通过这种方式,可以禁用组选择,但对象仍然可以选择。

是否尝试将可选属性设置为false?这将阻止对象被选中,但事件仍会在它们身上触发

http://fabricjs.com/docs/fabric.Object.html#selectable

可选:布尔如果设置为false,则无法选择对象进行修改(使用基于点单击或基于组的选择(。但事件仍在向它开火。

想知道有多少人不理解一个简单的问题。

是的,这是可能的。你必须听选择:更新并检查选择中是否有东西被锁定,然后锁定目标。

这对我的织物4.4.0起到了作用。我把它从我的项目中删除了,希望这个代码示例能起作用。至少它应该展示"如何"。

var canvas = window._canvas = new fabric.Canvas('c');
isLockedInSelection()
{
let activeObjects = canvas.getActiveObjects();
for (let i in activeObjects)
{
if (activeObjects[i].lockMovementX)
return true;
}
return false;
}
canvas.on('selection:updated', ({selected, target}) =>
{
if (isLockedInSelection())
{
target.lockMovementX = true;
target.lockMovementY = true;
target.lockSkewingX  = true;
target.lockSkewingY  = true;
target.lockRotation  = true;
target.lockScalingX  = true;
target.lockScalingY  = true;
}
});

相关内容

  • 没有找到相关文章

最新更新