Fabric js选择组中的对象

时间:2016-05-02 19:24:17

标签: fabricjs

是否可以从这样创建的组中选择一个对象?

var r = new fabric.Rect(...);
var l = new fabric.Line(...);
var roadGroup = new fabric.Group([r,l],{ ... });

所以我想要一个组,但是分别选择对象l或r。

3 个答案:

答案 0 :(得分:1)

简单的答案是肯定的,但你应该确保考虑到小组的目的。

要获取包含在组中的对象的句柄,您可以执行以下操作:

var r = roadGroup._objects[0];
var l = roadGroup._objects[1];

选择群组中的孩子,请尝试以下操作:

fabricCanvas.setActiveObject(roadGroup._objects[0]);

<强>肥皂盒

创建组的目的是将多个对象视为单个对象。选择对象的目的是允许用户与对象进行交互。如果您希望用户与组的某个部分进行交互,您可能需要考虑不首先对它们进行分组,或者在选择子对象之前取消对它们进行分组。

<强> /肥皂盒

答案 1 :(得分:0)

我相信_objects仅在内部使用,因此将来可能会更改。

在我看来,group.item(indexOfItem)似乎就是这种方式

答案 2 :(得分:0)

因此,在这种情况下,一个盒子中有多个图像。这些所有图像都随框一起移动(作为一个组),但用户也应该能够选择单个图像并将其移动。

基本上我想选择组中的单个对象(在我的情况下为图像),我这样做是这样的:

groupImages.forEach(image => image.on('mousedown', function (e) {
    var group = e.target;
    if (group && group._objects) {
        var thisImage = group._objects.indexOf(image);
        var item = group._objects[thisImage];//.find(image);
        canvas.setActiveObject(item);
    }
}));

groupImages可能是您要单独选择的对象列表。