2013-09-19 1 views
18

Я помещаю текст, изображение и фигуры на холсте с помощью Fabric.js, я создал три разных панели редактирования для всех трех. Когда пользователь выбирает текст, я хочу показать панель текста. как мудрый для изображения и формы.определить тип выбранного объекта в Fabricjs

Моя проблема в том, как определить тип выбранного объекта ??

Спасибо,

+1

плз опубликовать некоторый код DAT вы пытались – iJade

+0

я попробовал manully установку и извлечение холста. getActiveObject(). get ('type'), но есть ли другой способ – anam

ответ

9

Я решил эту проблему, используя следующий код ::

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 
     { 

     } 


     }); 
+1

Что относительно любой формы? '.get ('type')' возвращает 'rect', 'circle' и т. д. –

+0

@PaulRedmond да возвращает точный тип объекта. rect, circle, Image, ... – Tharanga

+0

Для тех, кто работает с более поздними версиями js. Я думаю, вы имеете в виду object.get ('type') === 'textbox' not 'text' – Robin

21

canvas.getActiveObject().get('type') в Сиой Симх сказал правильно. Вы также можете прослушать событие:

function onObjectSelected(e) { 
    console.log(e.target.get('type')); 
} 
canvas.on('object:selected', onObjectSelected); 
+0

Я ищу отложенные события и нашел приятную демонстрацию на сайте fabric.js - http://fabricjs.com/events/ –

8

Попробуйте isType()

функцию образца для получения выбранных объектов

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); 
+0

Для тех, кто работает с более поздними версиями js. Я думаю, вы имеете в виду object.get ('type') === 'textbox' not 'text' – Robin

 Смежные вопросы

  • Нет связанных вопросов^_^