Подтвердить что ты не робот

Fabric.js: как отменить выбор одного или нескольких объектов на холсте?

Например, у меня есть несколько объектов на холсте, A, * B * и C. Три из этих объектов выбираются как активированные. Используя Fabric.js, возможно ли отменить/деактивировать только один объектов?

Например, три объекта, выбранные, затем, когда нажата кнопка за пределами холста, объект B отбрасывается/деактивируется.

Я просмотрел файлы документов на официальном сайте FabricJS, и я нашел canvas.deactivateAll(), canvas.discardActiveObject(). Эти функции могут деактивировать все активные объекты, не являясь конкретным активным объектом.

Может кто-нибудь, пожалуйста, дайте мне руководство по этому поводу? Спасибо!

4b9b3361

Ответ 1

Возможно, я опоздал с ответом, но в последнем fabricjs (1.4.3) вы можете использовать следующие, чтобы отменить выбор всех выбранных объектов на холсте.

canvas.deactivateAll().renderAll();

Я использую это перед созданием образа этого холста. Надеюсь, это поможет кому-то.

Ответ 2

предположим, что у вас есть три объекта objectA, ObjectB и ObjectC и объекты. Теперь, если вы хотите отменить выбор любого объекта (например, ObjectB). В этом случае вы можете попробовать следующий код.

var activeGroup = canvas.getActiveGroup();
activeGroup.removeWithUpdate(ObjectB);
canvas.renderAll(); 

Если у вас есть только один node активный, вы можете сделать.

canvas.discardActiveObject();
canvas.renderAll(); 

Ответ 3

Чтобы отбросить все активные группы, вы можете использовать функцию ниже. В настоящее время активные группы и пожарные события. Если функция вызывается тканью в результате события мыши, событие передается как парматер и отправляется в функцию огня для пользовательские события. При использовании в качестве метода e param не имеет приложения.

canvas.discardActiveGroup();

Чтобы отменить объект sigle, вы можете использовать это. Отбрасывает активный объект и события пожара. Если функция вызывается тканью в результате события мыши, событие передается как парматер и отправляется в функцию огня для пользовательских событий. При использовании в качестве метода e param не имеет приложения.

canvas.discardActiveObject();

И я последний, наконец, отображает как верхний холст, так и дополнительный контейнерный холст.

canvas.renderAll();

Ответ 4

Я только что нашел способ сделать это:

Когда несколько объектов активируются, они фактически образуют группу. Тогда на самом деле просто нужно использовать метод fabric.group, называемый "removeWithUpdate", тогда он будет делать.

Пример:

var activeGroup = canvas.getActiveGroup();
activeGroup.removeWithUpdate(theObject);
canvas.renderAll();