如何使用 Fabric JS 添加对交互绝对惰性的图像
How to add an Image with Fabric JS that is absolutely inert for interaction
是否可以使用 Fabric JS 添加对任何类型的交互都绝对惰性的图像?
我是什么意思?首先我们添加图片:
let image1 = fabric.Image.fromURL(src1, function (img) {
img.set({
left: 0,
top: 0,
});
canvas.add(img)
})
然后,另一张图片在上一张图片的正上方
let image2 = fabric.Image.fromURL(src2, function (img) {
img.set({
left: 0,
top: 0,
});
canvas.add(img)
})
现在我像这样在 canvas 上设置 Mouseclick 侦听器:
canvas.on({
'mouse:down': (options) => { console.log(options.target) }
})
...因此,如果我们单击我们的 image2(即 image1 的正上方),options.taget 当然是指向 image2。
但我需要的是此点击忽略图像,该图像位于第一个图像之上,我们可以直接与下方的图像进行交互
看起来可以覆盖结构侦听器来实现我需要的,但我什至不知道从哪里开始(我的技能太低)。
如有任何帮助,将不胜感激,谢谢
你可以直接设置evented:false
and selectable:false
.
几乎不言自明。
const canvas = new fabric.Canvas("c")
const url = "https://via.placeholder.com/200x200"
const url2 = "https://via.placeholder.com/100x100"
fabric.Image.fromURL(url, (img) => {
canvas.add(img)
}, {
left: 0,
top: 0,
stroke: 'blue',
strokeWidth: 1,
evented: false,
selectable: false
})
fabric.Image.fromURL(url2, (img) => {
canvas.add(img)
img.sendToBack()
}, {
left: 150,
top: 50,
stroke: 'blue',
strokeWidth: 1
})
canvas.on({
"mouse:down": options => {
console.log(options.target);
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.4.4/fabric.js"></script>
<canvas id='c' width="300" height="250"></canvas>
是否可以使用 Fabric JS 添加对任何类型的交互都绝对惰性的图像?
我是什么意思?首先我们添加图片:
let image1 = fabric.Image.fromURL(src1, function (img) {
img.set({
left: 0,
top: 0,
});
canvas.add(img)
})
然后,另一张图片在上一张图片的正上方
let image2 = fabric.Image.fromURL(src2, function (img) {
img.set({
left: 0,
top: 0,
});
canvas.add(img)
})
现在我像这样在 canvas 上设置 Mouseclick 侦听器:
canvas.on({
'mouse:down': (options) => { console.log(options.target) }
})
...因此,如果我们单击我们的 image2(即 image1 的正上方),options.taget 当然是指向 image2。
但我需要的是此点击忽略图像,该图像位于第一个图像之上,我们可以直接与下方的图像进行交互
看起来可以覆盖结构侦听器来实现我需要的,但我什至不知道从哪里开始(我的技能太低)。
如有任何帮助,将不胜感激,谢谢
你可以直接设置evented:false
and selectable:false
.
几乎不言自明。
const canvas = new fabric.Canvas("c")
const url = "https://via.placeholder.com/200x200"
const url2 = "https://via.placeholder.com/100x100"
fabric.Image.fromURL(url, (img) => {
canvas.add(img)
}, {
left: 0,
top: 0,
stroke: 'blue',
strokeWidth: 1,
evented: false,
selectable: false
})
fabric.Image.fromURL(url2, (img) => {
canvas.add(img)
img.sendToBack()
}, {
left: 150,
top: 50,
stroke: 'blue',
strokeWidth: 1
})
canvas.on({
"mouse:down": options => {
console.log(options.target);
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.4.4/fabric.js"></script>
<canvas id='c' width="300" height="250"></canvas>