Je place du texte, des images et des formes sur une toile à l'aide de Fabric.js. J'ai créé trois panneaux d'édition différents pour les trois. Lorsque l'utilisateur sélectionne du texte, je souhaite afficher le panneau de texte. comme sage pour l'image et les formes.
Comment identifier le type d'objet sélectionné?
canvas.getActiveObject().get('type')
comme l'a dit simmi simmi est correct. Vous pouvez également écouter des événements:
function onObjectSelected(e) {
console.log(e.target.get('type'));
}
canvas.on('object:selected', onObjectSelected);
J'ai résolu ce problème en utilisant le code suivant ::
if(canvas.getActiveObject().get('type')==="text")
{
//Display text panel
console.log('text panel Displayed');
$("#Image_left_panel").css("display", "none");
$("#shape_left_panel").css("display", "none");
//$("#left_panel").css("display", "block");
}
else if(canvas.getActiveObject().get('type')==="Image")
{
//Display Image Panel
console.log('Image Panel Displayed');
$("#Image_left_panel").css("display", "block");
$("#shape_left_panel").css("display", "none");
$("#left_panel").css("display", "none");
}
else
{
}
});
Essayez isType()
Exemple de fonction pour obtenir des objets sélectionnés
function onObjectSelected(o){
//activeObject = canvas.getActiveObject()
activeObject = o.target;
if(activeObject.isType('text')){
//display text logic
}
else if(activeObject.isType('image')){
//display image
}
else if( activeObject.isType('xyz')){
//display shape logic
}
}
canvas.on('object:selected', onObjectSelected);
Dans fabricjs 3.4, pour obtenir le type d'objet, utilisez simplement:
var objType = canvas.getActiveObject().type;
Sur l'objet IText, ce qui précède renverra: i-text
Sur l'image, il renverra: image
function onObjectSelected() {
// check if type is a property of active element
var objType = (canvas.getActiveObject().type ? canvas.getActiveObject().type : "");
// your code
}
canvas.on('object:selected', onObjectSelected);