Javascript 选择距离鼠标单击最近的对象

Javascript 选择距离鼠标单击最近的对象,javascript,fabricjs,Javascript,Fabricjs,我想找到离鼠标点击位置最近的对象 可能吗 我的物体很小,像圆点。所以我无法选择它们,我想可能是我能找到离鼠标点击位置最近的对象 有办法找到它吗 var canvas = new fabric.Canvas('c', { selection: false }); var circle, isDown, origX, origY; canvas.on('mouse:down', function(o){ isDown = true; var pointer = ca

我想找到离鼠标点击位置最近的对象

可能吗

我的物体很小,像圆点。所以我无法选择它们,我想可能是我能找到离鼠标点击位置最近的对象

有办法找到它吗

var canvas = new fabric.Canvas('c', { selection: false });
var circle, isDown, origX, origY;

    canvas.on('mouse:down', function(o){
      isDown = true;
      var pointer = canvas.getPointer(o.e);
      origX = pointer.x;
      origY = pointer.y;
      circle = new fabric.Circle({
        left: pointer.x,
        top: pointer.y,
        radius: 10,
        fill: 'red',
        selectable: false,
        originX: 'center', originY: 'center',
      });
      canvas.add(circle);
      canvas.renderAll();
    });

    canvas.on('mouse:up', function(o){
      isDown = false;
    });

您可以从画布获取最近的对象。\u对象。 在鼠标上:移动事件

完整代码段 var canvas=newfabric.canvas'canvas',{selection:false}; var circle、isDown、origX、origY; 画布。在“鼠标:向下”上,functiono{ isDown=真; var pointer=canvas.getPointero.e; origX=指针.x; origY=pointer.y; 圆形=新织物。圆形{ 左:指针.x, 顶部:pointer.y, 半径:10, 填充:“红色”, 可选:false, originX:'中心',originY:'中心', }; canvas.addcircle; canvas.renderal; }; 画布。关于“鼠标:移动”,functiono{ var minLength=10000000; var minObj=null; var pointer=canvas.getPointero.e; origX=指针.x; origY=pointer.y; 对于i=0;i我不熟悉这个库,但是如果库不支持这样的功能,你可以使用一个或类似的数据结构来检查最近的对象。我建议一个快速修复方法,创建一个带有填充的更大的对象,这样它是可选择的,尽管元素很小这是复杂的,我想可能还有更好的例子。
  for ( i = 0; i < canvas._objects.length; i++){
    if(Math.pow(canvas._objects[i].left - origX,2) + Math.pow(canvas._objects[i].top - origY,2) < minLength){
       minObj = canvas._objects[i];
       minLength = Math.pow(canvas._objects[i].left - origX,2) + Math.pow(canvas._objects[i].top - origY,2);
    }
  }