2013-07-17 39 views
0

我建立在HTML5画布和以下这些教程:kineticjs申请不止一个过滤器

http://www.html5canvastutorials.com/kineticjs/html5-canvas-kineticjs-blur-filter-tutorial/ http://www.html5canvastutorials.com/kineticjs/html5-canvas-kineticjs-brighten-or-darken-image-tutorial/

现在,如果我想在图像上同时应用过滤器,这可能吗?我想让我的用户来改变图片的两个模糊和亮度,所以我想出了:

var Themex = new Kinetic.Image({ 
    x: 0, 
    y: 0, 
    name: "BG_image", 
    image: imageBG, 
    width: stage.getWidth(), 
    height: stage.getHeight(), 
    filter: { 
    Kinetic.Filters.Brighten, 
    Kinetic.Filters.Blur 
    }, 
    filterBrightness: 0, 
    filterRadius: 20 
}); 

,但我得到一个JavaScript错误:“未捕获的SyntaxError:意外的标识”的过滤器:{行。

有什么想法吗?

+0

我从来没有使用过Kinectic.js,但您肯定是想传递一个过滤器数组。数组用'[]'包围。像这样:'过滤器:[Kinetic.Filters.Brighten,Kinetic.Filters.Blur]' – Philipp

+0

感谢菲利普,试图在发布之前,这里不工作 – sd1sd1

回答

1

well 如果有人需要 - 实际上不需要输入任何过滤器。一次可以附加任何过滤器 - 就像那样,使用setFilter函数

var slider = document.getElementById('slider'); 

slider.onchange = function() { 
    Themex.setFilter(Kinetic.Filters.Brighten); 
    Themex.setFilterBrightness(Math.round(slider.value)); 
    BGlayer.batchDraw(); 
}; 

var sliderBlur = document.getElementById('blurSlider'); 

sliderBlur.onchange = function() { 
    Themex.setFilter(Kinetic.Filters.Blur); 
    Themex.setFilterRadius(Math.round(sliderBlur.value)); 
    BGlayer.batchDraw(); 
}; 

var Grayscale_But = document.getElementById('Grayscale_But'); 

Grayscale_But.onclick = function() { 
    Themex.setFilter(Kinetic.Filters.Grayscale); 
    Themex.setFilterRadius(Math.round(20)); 
    BGlayer.batchDraw(); 
};