J'ai une application simple, basée sur le js, permettant aux utilisateurs d'ajouter des formes, de les connecter et de les animer.
Voici mon 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);
}
Ceci est mon Fiddle . Vous pouvez cliquer sur une nouvelle animation, puis ajouter des objets dès maintenant.
Je veux que l'utilisateur sélectionne un objet et puisse ensuite le supprimer, je ne sais pas comment. J'ai trouvé ceci Supprimer plusieurs objets à la fois sur une toile fabric.js en html5 Mais je n'ai pas pu l'implémenter avec succès. En gros, je veux que les utilisateurs puissent sélectionner un objet et le supprimer.
Vous pouvez utiliser la méthode remove (), par exemple.
window.deleteObject = function() {
canvas.getActiveObject().remove();
}
Depuis la sortie de la nouvelle version de fabric.js, vous devez utiliser:
canvas.remove(canvas.getActiveObject());
Supprimer tous les objets sélectionnés:
canvas.getActiveObjects().forEach((obj) => {
canvas.remove(obj)
});
canvas.discardActiveObject().renderAll()
J'utilise Fabric JS 2.3.6.
Je voulais permettre à l'utilisateur de sélectionner un ou plusieurs objets sur la toile et de les supprimer en cliquant sur le bouton Supprimer.
Méthodes supprimées d'anciennes versions
Les méthodes suivantes ne sont plus disponibles depuis l'introduction de ActiveSelection:
setActiveGroup(group);
getActiveGroup();
deactivateAll();
discardActiveGroup();
deactivateAllWithDispatch();
Voici mon code qui fonctionne très bien pour moi et j'espère que vous aussi.
$('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();
}