Je souhaite sélectionner par programme l'objet Fabrics.js. Qu'est-ce que je dois faire? Par exemple, j'ajoute deux objets comme celui-ci:
var canvas = new fabric.Canvas('canvas');
canvas.add(new fabric.Rect({
left: 100,
top: 100,
width: 75,
height: 50,
fill: 'green',
stroke: 'black',
strokeWidth: 3,
padding: 10
}));
canvas.add(new fabric.Circle({
left: 200,
top: 200,
radius: 30,
fill: 'gray',
stroke: 'black',
strokeWidth: 3
}));
et j'ai deux boutons en cliquant sur le bouton nommé
En cliquant sur le bouton de sélection du rectangle, il doit sélectionner la forme du rectangle et en cliquant sur le bouton de sélection du deuxième objet, il doit sélectionner le deuxième cercle d'objet.
Voici le Jsfiddle pour solution de contournement.
J'ai gogglé et marre, ici je cherche un point par où commencer.
[~ # ~] modifier [~ # ~]
J'aime avoir l'ID pour chaque objet, il devrait être possible de sélectionner l'objet en utilisant cet ID, pourquoi je le demande, tout en utilisant les choses collaboratives, nous ne pouvons pas dire avec certitude que tous les nœuds connectés auront l'élément en même index, donc un identifiant unique sera utile.
Oui, vous pouvez définir l'identifiant de chaque élément en ajoutant le code ci-dessous dans all.js
Dans la version 1.3.0 de fabric.js build: Dans la déclaration d'objet, ajoutez
var object = {
id: this.id,
remaining properties in all.js
}
Vous pouvez maintenant définir l'identifiant de l'objet avec:
canvas.getActiveObject().id=your id value;
Vous pouvez récupérer l'ID d'objet avec:
Myid= canvas.getActiveObject().get('id');
Vous souhaitez utiliser:
canvas.setActiveObject(canvas.item(0));
Dans les boutons, cliquez sur événement
Le nombre correspond à l'ordre dans lequel l'objet a été ajouté au canevas.
Vois ici:
Pour trouver le numéro d'objet tissu (numéro d'article) de l'objet sélectionné, utilisez:
canvas.on({
'object:selected': selectedObject
});
function selectedObject(e) {
var id = canvas.getObjects().indexOf(e.target);
}
var id
est le même nombre si vous définissez l'objet par programmation comme dans la réponse de Dan Brown:
canvas.setActiveObject(canvas.item(id)); //id = 0, 1, 2 etc.
ajoutez un identifiant à vos objets.
var canvas = new fabric.Canvas('canvas');
canvas.add(new fabric.Rect({
id: 123,
left: 100,
top: 100,
width: 75,
height: 50,
fill: 'green',
stroke: 'black',
strokeWidth: 3,
padding: 10
}));
canvas.add(new fabric.Circle({
id: 456,
left: 200,
top: 200,
radius: 30,
fill: 'gray',
stroke: 'black',
strokeWidth: 3
}));
function removeSpot(canvas, id) {
canvas.forEachObject(function(obj) {
if (obj.id && obj.id === id) canvas.remove(obj);
});
}
// remove rect
removeSpot(canvas, 123);
// remove circle
removeSpot(canvas, 456);