2016-04-29 4 views
0

Я использую Fabric.js. Для изображений я хочу предоставить пользователям image filter.Создать динамический объект javascript

Ниже приведен код для создания нового фильтра Gayscale:

var filter = new fabric.Image.filters.Grayscale(); 
    canvas.getActiveObject().filters=[]; 
    canvas.getActiveObject().applyFilters(_canvasObject.renderAll.bind(_canvasObject)); 
    canvas.getActiveObject().filters.push(filter); 
    canvas.getActiveObject().applyFilters(_canvasObject.renderAll.bind(_canvasObject)); 

Для других фильтров также код почти тот же, который повторяется для первой линии, за исключением.

Я предоставляю флажки для пользователей, чтобы выбрать Фильтр. Я перебираю все checkBoxes и добавляю event listener для применения нового фильтра. Поэтому в приведенном ниже коде я хочу динамически создать объект фильтра.

var filterClickHandler = function(selectedFilter){ 
    return function(){ 
     applySelectedFilter(selectedFilter); 
    } 
} 

function applySelectedFilter(selectedFilter){ 
//selectedFilter may be Grayscale,Sepia,etc... 
// var filter = new fabric.Image.filters.Grayscale(); 
var filter = new fabric.Image.filters.selectedFilter(); 
} 

В любом случае, чтобы это сделать?

+0

Можете ли вы предоставить скрипку для этого? –

ответ

0

fabricJS классы все еще простые объекты. Вы можете сделать что-то просто:

function applySelectedFilter(selectedFilter){ 
var filter = new fabric.Image.filters[selectedFilter](); 
} 
Смежные вопросы