2013-12-02 1 views
2

У меня на моем холсте несколько объектов типа. Я могу сделать масштабирование, вращение и т. Д. Все на конкретном объекте.Снять выделение выделенного объекта в Fabric.js

Но когда я выбираю конкретный объект, я хочу изменить его цвет stroke.

canvas.observe('mouse:down', function(e) { 

    activeInstance = canvas.getActiveObject(); 
    activeGroupInstance = canvas.getActiveGroup(); 
    if (activeInstance!=null){   
     activeInstance.set("stroke","#FF0000"); 
    } 
} 

Код работает хорошо. Но проблема в том, что цвет stroke или любой другой допустимый property не отражает напрямую, что означает, что я должен отменить выделение выбранного объекта, чтобы увидеть изменение его свойств. Итак, мой вопрос в том, что происходит не так? Если это обычное поведение, которое мы должны отменить/щелкнуть по выбранному объекту, то, как отменить выделение выбранного объекта с помощью кода i.e без использования щелчков мыши, просто используя фрагмент кода.

+1

Вам нужно просто позвонить 'canvas.renderAll()', чтобы изменения вступили в силу – kangax

+0

А! забыть о базовом требовании к рендерингу. В любом случае, спасибо @kangax за помощь! – softvar

+0

@kangax: Можете ли вы предложить мне несколько коротких и полезных приложений/демонстрационных идей, чтобы я мог представить их в ChallengePost. – softvar

ответ

0

Мы можем использовать нижеуказанные решения.

Чтобы отбросить все активные группы, вы можете использовать функцию ниже. Дисквалифицированные в настоящее время активные группы и события пожара. Если функция вызывается тканью в результате события мыши, событие передается как парматер и отправляется в функцию огня для пользовательских событий. При использовании в качестве метода e param не имеет приложения.

canvas.discardActiveGroup(); 

Чтобы отказаться от объекта sigle, вы можете использовать это. Отбрасывает активный объект и события пожара. Если функция вызывается тканью в результате события мыши, событие передается как парматер и отправляется в функцию огня для пользовательских событий. При использовании в качестве метода e param не имеет приложения.

canvas.discardActiveObject(); 

И последний из последних, наконец, отображает как верхний холст, так и вторичный контейнерный холст.

canvas.renderAll();