【发布时间】:2019-10-16 15:23:08
【问题描述】:
我有一个包含一些元素的画布,当用户在画布上选择一个元素(点击一个元素)时,我想添加一个事件处理程序。
我尝试使用 selection: created 和 object: selected 事件来处理相同的问题,但它仅在用户选择一个元素然后单击画布中的其他位置然后尝试选择另一个元素时才能正常工作,但是当用户单击一个元素(触发事件处理程序),然后单击事件处理程序未触发的另一个元素。我该如何处理?
我看到在selection:created 的问题中提到了这里提到的一个选项和
selection:updatedhttps://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>
【问题讨论】:
标签: javascript fabricjs