是否可以从这样创建的组中选择一个对象?
var r = new fabric.Rect(...);
var l = new fabric.Line(...);
var roadGroup = new fabric.Group([r,l],{ ... });
所以我想要一个组,但是分别选择对象l或r。
答案 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可能是您要单独选择的对象列表。