У меня есть холст с некоторыми элементами, и я хотел бы добавить обработчик событий, когда пользователь выбирает элемент (щелкает по элементу) на холсте.
Я пытался использовать selection: created
и object: selected
события для обработки того же самого, но это работает только тогда, когда пользователь выбирает элемент, а затем нажимает на другое место на холсте, а затем пытается выбрать другой элемент, он работает отлично, но когда пользователь нажимает на один элемент (срабатывает обработчик события)и затем нажимает на другой элемент, который не вызывает обработчик события. Как мне справиться с этим?
Я вижу, что есть возможность использовать, как упомянуто здесь, в проблеме с selection:created
и selection:updated
https://github.com/fabricjs/fabric.js/issues/4886
Но есть ли способ, которым я мог бы использовать их вместе?
const canvas = new fabric.Canvas('paper', {
preserveObjectStacking: true,
enableRetinaScaling: false,
imageSmoothingEnabled: false
});
canvas.setHeight(500);
canvas.setWidth(700);
const red = new fabric.Rect({
id: 'red',
left: 10,
top: 10,
width: 100,
height: 100,
fill: 'red'
});
const green = new fabric.Rect({
id: 'green',
left: 150,
top: 150,
width: 100,
height: 100,
fill: 'green'
});
canvas.add(red);
canvas.add(green);
canvas.renderAll();
canvas.on("selection:created", function(obj){
alert(obj.target.id)
});
canvas.on("selection:updated", function(obj){
alert(obj.target.id)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.2.3/fabric.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<canvas id="paper" width="400" height="400" style="border:1px solid #ccc"></canvas>