4
Есть ли способ иметь редактируемые объекты в fabric.Group
, чтобы можно было перемещать один из объектов?Группа с редактируемыми объектами?
Есть ли способ иметь редактируемые объекты в fabric.Group
, чтобы можно было перемещать один из объектов?Группа с редактируемыми объектами?
Примечание: Я не тестировал этот код самостоятельно.
Возможно, что-то вроде этой работы, по крайней мере, мы можем немного определить дочерние объекты.
var $canvas = {};
$canvas.activePaths = [];
function onMouseDown = function (options) {
var mousePos = canvas.getPointer(options.e);
mousePos.x = parseInt(mousePos.x);
mousePos.y = parseInt(mousePos.y);
var width = canvas.getWidth();
var height = canvas.getHeight();
var pixels = canvas.getContext().getImageData(0, 0, width, height);
var pixel = (mousePos.x + mousePos.y * pixels.width) * 4;
var activePathsColor = new fabric['Color']('rgb(' + pixels.data[pixel] + ',' + pixels.data[pixel + 1] + ',' + pixels.data[pixel + 2] + ')');
var colorHex = '#' + activePathsColor.toHex().toLowerCase();
var activeObject = canvas.getActiveObject();
var activePath = [];
if(activeObject.type == 'group') {
for (var i = 0; i < activeObject.getObjects().length; i++) {
var path = activeObject.getObjects()[i];
if (path.getFill().toLowerCase() == colorHex) {
$canvas.activePaths.push(path);
}
}
}
}
function warpActiveObject() {
for(var i = 0; i < $canvas.activePaths.length; i++) {
canvas.add(
new fabric.Rect({
left: $canvas.getActiveObj().left + ($canvas.activePaths[i].left),
top: $canvas.getActiveObj().top + ($canvas.activePaths[i].top),
fill: '',
width: $canvas.activePaths[0].width,
height: $canvas.activePaths[0].height,
stroke: 'white',
opacity: 0.5
})
);
}
}
Вы должны иметь возможность разгруппировать объект из группы. Затем вы сможете изменить его самостоятельно. – kangax
@kangax Ну, это работает. Возможно, позвольте мне описать мою цель: «редактируемый объект полигона» ... так что вы можете изменить отдельные точки группы (полигон), но если вы щелкнете по центру, вы можете изменить группу дыр. На данный момент я создал новый объект, основанный на fabric.Group, но я не нашел способ получить «щелчок» -эвент из дочерних объектов ... – Bastian
Я вижу ... К сожалению, нет способа щелкнуть по дочерние объекты. – kangax