Fabric.js: как отменить выбор одного или нескольких объектов на холсте?
Например, у меня есть несколько объектов на холсте, A, * B * и C. Три из этих объектов выбираются как активированные. Используя Fabric.js, возможно ли отменить/деактивировать только один объектов?
Например, три объекта, выбранные, затем, когда нажата кнопка за пределами холста, объект B отбрасывается/деактивируется.
Я просмотрел файлы документов на официальном сайте FabricJS, и я нашел canvas.deactivateAll(), canvas.discardActiveObject(). Эти функции могут деактивировать все активные объекты, не являясь конкретным активным объектом.
Может кто-нибудь, пожалуйста, дайте мне руководство по этому поводу? Спасибо!
Ответы
Ответ 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();