是关于这个小脚本的:https://jsfiddle.net/yd0mfwen/
` // 创建 Fabric.js 画布 var canvas = new Fabric.Canvas('canvas');
img1 = new fabric.Circle({
radius: 200,
fill: 'grey',
left: 10,
top: 10,
selectable: false,
});
canvas.add(img1);
// transparent object to resize group to canvas size
var base = new fabric.Rect({
fill: 'transparent',
left: 0,
top: 0,
selectable: false,
width: canvas.width,
height: canvas.height,
});
var circle = new fabric.Circle({
radius: 50,
fill: 'red',
left: 150,
top: 150,
selectable: true
});
var circle2 = new fabric.Circle({
radius: 30,
fill: 'blue',
left: 80,
top: 110,
selectable: true
});
// Create a group to apply a mask
var group = new fabric.Group([circle, circle2, base], {
globalCompositeOperation: 'source-in',
hasBorders: false,
hasControls: false,
selectable: false
});
canvas.add(group);
group.on('mousedown', function(e) {
var innerTarget = group._searchPossibleTargets(e.e);
canvas.setActiveObject(innerTarget);
});
group._searchPossibleTargets = function(e) {
var pointer = this.canvas.getPointer(e, true);
var i = canvas.getObjects().length,
normalizedPointer = this.canvas._normalizePointer(this, pointer);
while (i--) {
if (this.canvas._checkTarget(normalizedPointer, this._objects[i])) {
return this._objects[i];
}
}
return null;
}
`
一些背景: 对象有 3 种“类型”:面具、助手和普通对象。
mask:可以是任何形状。在这个例子中它是一个简单的圆圈。它作为第一个对象放置在画布上,稍后添加的对象(分组)将具有“globalCompositeOperation:source-in”,因此它们仅在蒙版“内部”可见。
helper:一个与画布大小相同的简单透明矩形。当前需要,因此“正常”对象组具有与画布相同的大小(因此法线移动时不需要调整大小)。
正常:在此示例中为 2 个圆圈
--
法线和助手被添加到一组,然后添加到画布中。她的问题来了: 普通对象可以按预期选择(“_searchPossibleTargets”)并且可以四处移动,但调整大小/缩放、拉伸...是不可能的。控件可见,但无法通过鼠标使用。
我尝试手动启用控件。它改变了注意,因为它们已经启用。
对此我没有任何解释。有人有什么想法吗?使用的版本是5.3.1
您对此有解决方案吗?我们有同样的问题也许你可以分享