代码之家  ›  专栏  ›  技术社区  ›  user9513304

如何触发或接收组中对象的事件?

  •  1
  • user9513304  · 技术社区  · 6 年前

    我用布料。js开发在线ppt编辑器。我有一个问题,a组有B和C,我可以听a的事件,但我也需要听a和B的事件。怎么做?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Durga    6 年前

    您需要设置 subTargetCheck 对于组对象为true,然后您可以从包含数组的事件访问子目标 subTargets[]

    var canvas = new fabric.Canvas('c');
    var rect = new fabric.Rect({
      width:100,height:100,left:10,top:10,fill:'red'
    });
    var circle = new fabric.Circle({
      left:150,top:10,fill:'green',radius:50
    });
    var group = new fabric.Group([rect,circle],{
      left:20,
      top:20,
      subTargetCheck: true
     });
    canvas.add(group);
    group.on('mousedown',onMouseDown);
    
    function onMouseDown(option){
     option.subTargets[0] && console.log(option.subTargets[0].type)
    }
    canvas{
     border: 1px solid #000;
    }
    <script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
    <canvas id="c" width="400" height="400"></canvas>