fabric.js 提供了一个函数 isTargetTransparent
,可以用来判断点击的位置是否是 canvas 中某个元素的子元素。
该函数的用法如下:
canvas.isTargetTransparent(event.e.offsetX, event.e.offsetY, target);
它接受三个参数:
event.e.offsetX
:鼠标点击的 x 坐标event.e.offsetY
:鼠标点击的 y 坐标target
:fabric.js 中的元素对象
该函数会返回一个布尔值,如果点击的位置是 target
的子元素,则返回 true
;如果点击的位置不是 target
的子元素,则返回 false
。
例如,下面的代码展示了如何使用 isTargetTransparent
函数来判断鼠标是否点击了 canvas 中的一个圆形元素:
canvas.on('mouse:down', function(event) {
if (event.target && event.target.type === 'circle') {
if (canvas.isTargetTransparent(event.e.offsetX, event.e.offsetY, event.target)) {
console.log('点击的是圆形元素的子元素');
} else {
console.log('点击的是圆形元素');
}
}
});