Fabric.js getObjects() 按标签或类型

Geo*_*rge 2 javascript html5-canvas fabricjs

在fabric.js中,您可以使用以下命令获取画布中的所有线条

objects = canvas.getObjects('line')
Run Code Online (Sandbox Code Playgroud)

但我有一些对象是一组recttext

如何标记项目并将它们作为一个组?我无法选择所有组,因为还有其他类型的组。

这是我的分组对象

var profilepic = new fabric.Rect({
        originX: 'center',
        originY: 'center',
        fill: "#000",
        opacity: 0.7,
        strokeDashArray: [5, 5],
        stroke: '#fff',
        width: w,
        height: h
      });
      var text = new fabric.Text(text, {
        fontSize: 30,
        fill: "#fff",
        originX: 'center',
        originY: 'center',
      });
      var group = new fabric.Group([ profilepic, text ], {
        left: x,
        top: y,
        angle: 0,
      });
Run Code Online (Sandbox Code Playgroud)

Spe*_*und 5

您可以向对象添加任何想要的属性,这样您就可以以某种方式标记您的组

var group = new fabric.Group([profilepic, text], {
  left: 0,
  top: 0,
  angle: 0,
  hasRectangle: true
});
Run Code Online (Sandbox Code Playgroud)

然后我不确定你想要如何选择你的对象,但你可以这样做来获得你想要的对象:

let rectanglegroups = canvasobj._objects.filter(
  obj => obj.hasRectangle === true
);
rectanglegroups.map(obj => canvasobj.setActiveObject(obj));
Run Code Online (Sandbox Code Playgroud)