recorrer objetos objeto metodos lista eliminar elemento convertir buscar array agregar javascript html5 canvas fabricjs

javascript - objetos - Permitir al usuario eliminar un objeto js de tejido seleccionado



metodos en javascript (4)

Tengo una aplicación simple basada en tejido js donde permitiré a los usuarios agregar formas, conectarlos y animarlos.

Siguiente es mi JS

var canvas; window.newAnimation = function(){ canvas = new fabric.Canvas(''canvas''); } window.addRect = function(){ var rect = new fabric.Rect({ left: 100, top: 100, fill: ''red'', width: 20, height: 20, }); canvas.add(rect); } window.addCircle = function(){ var circle = new fabric.Circle({ radius: 20, fill: ''green'', left: 100, top: 100 }); canvas.add(circle); }

Este es mi Fiddle . Puede hacer clic en la nueva animación y luego agregar objetos a partir de ahora.

Quiero que el usuario seleccione un objeto y luego pueda borrarlo. No estoy seguro de cómo. Encontré esto Eliminar varios objetos a la vez en un lienzo fabric.js en html5 Pero no pude implementarlo correctamente. Básicamente quiero que los usuarios puedan seleccionar un objeto y borrarlo.


Desde que se lanzó la nueva versión de fabric.js, debe usar:

canvas.remove(canvas.getActiveObject());


Eliminar todos los objetos seleccionados:

canvas.getActiveObjects().forEach((obj) => { canvas.remove(obj) }); canvas.discardActiveObject().renderAll()


Estoy usando Fabric JS 2.3.6.

Quería permitir al usuario seleccionar uno o más objetos en el lienzo y eliminarlos haciendo clic en el botón Eliminar.

Métodos eliminados de versiones anteriores

Los siguientes métodos ya no están disponibles desde la introducción de ActiveSelection:

setActiveGroup(group); getActiveGroup(); deactivateAll(); discardActiveGroup(); deactivateAllWithDispatch();

Aquí está mi código que funciona muy bien para mí y espero que usted también.

$(''html'').keyup(function(e){ if(e.keyCode == 46) { deleteSelectedObjectsFromCanvas(); } }); function deleteSelectedObjectsFromCanvas(){ var selection = canvas.getActiveObject(); if (selection.type === ''activeSelection'') { selection.forEachObject(function(element) { console.log(element); canvas.remove(element); }); } else{ canvas.remove(selection); } canvas.discardActiveObject(); canvas.requestRenderAll(); }


Puede utilizar el método remove (), por ejemplo.

window.deleteObject = function() { canvas.getActiveObject().remove(); }

jsfiddle