AS3.0中的显示编程(末篇)-- 滤镜(下)
????? 剩下的三種濾鏡,因為我自己也不是很懂矩陣啊這些的,只能做些簡單的范例和說明了,抱歉!顏色矩陣濾鏡、卷積濾鏡、置換圖濾鏡這三種濾鏡只能通過AS代碼實現。如果說上面的六種濾鏡,只是在原圖的基礎上做些簡單的修改,那么這三種濾鏡,就可以稱之為大手術了,讓我們繼續往下看:
?
(7)顏色矩陣濾鏡(ColorMatrixFilter)
????? 顏色矩陣濾鏡用于過濾顯示對象的顏色和Alpha值。可以進行飽和度的更改、色相旋轉、將亮度更改為 Alpha,以及生成其它顏色操作效果等等。
????? 我這邊舉一個例子,大家先看效果圖:
?????
????? 在那些全國悲傷的日子,我們需要停止娛樂節目,把Flash變灰來表示我們沉痛的哀悼。這種變灰的效果當然有很多方式來實現,最簡便的是用JS控制網頁。上次看到百度有人問,在Flash里要怎么實現這個效果,最佳回答是在屬性面板里修改顏色。汗,這樣需要多大的工程量啊!其實不用那么麻煩,只要做一個顏色矩陣濾鏡并應用就可以實現這個效果了。
????? AS代碼如下,具體內容我就不解釋了,不要求學會:
var matrix:Array = new Array();
matrix = matrix.concat([0.3086, 0.6094, 0.082, 0, 0]); // red
matrix = matrix.concat([0.3086, 0.6094, 0.082, 0, 0]); // green
matrix = matrix.concat([0.3086, 0.6094, 0.082, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
var gray:ColorMatrixFilter = new ColorMatrixFilter(matrix);
var filtersArray:Array = new Array(gray);
tt.filters = filtersArray;
?
????? (8)卷積濾鏡(ConvolutionFilter)
????? 卷積濾鏡可用于對BitmapData對象或顯示對象應用一些特殊的圖像變形,如模糊、銳化、浮雕、背反、光亮等。
????? 模糊效果:
?????
????? AS代碼如下:
var matrix:Array = new Array();
matrix = matrix.concat([0, 1, 0]);
matrix = matrix.concat([1, 1, 1]);
matrix = matrix.concat([0, 1, 0]);
var convolution:ConvolutionFilter = new ConvolutionFilter();
convolution.matrixX = 3;
convolution.matrixY = 3;
convolution.matrix = matrix;
convolution.divisor = 5;
var filtersArray:Array = new Array(convolution);
tt.filters = filtersArray;
?
????? 銳化效果:
?????
????? AS代碼如下:
var matrix:Array = new Array();
matrix = matrix.concat([0, -1, 0]);
matrix = matrix.concat([-1, 5, -1]);
matrix = matrix.concat([0, -1, 0]);
var convolution:ConvolutionFilter = new ConvolutionFilter();
convolution.matrixX = 3;
convolution.matrixY = 3;
convolution.matrix = matrix;
convolution.divisor = 1;
var filtersArray:Array = new Array(convolution);
tt.filters = filtersArray;
?
????? 浮雕效果:
?????
????? AS代碼:
var matrix:Array = new Array();
matrix = matrix.concat([-2, -1, 0]);
matrix = matrix.concat([-1, 1, 1]);
matrix = matrix.concat([0, 1, 2]);
var convolution:ConvolutionFilter = new ConvolutionFilter();
convolution.matrixX = 3;
convolution.matrixY = 3;
convolution.matrix = matrix;
convolution.divisor = 1;
var filtersArray:Array = new Array(convolution);
tt.filters = filtersArray;
?
????? 背反效果:
?????
????? AS代碼:
var matrix:Array = new Array();
matrix = matrix.concat([0, -1, 0]);
matrix = matrix.concat([-1, 4, -1]);
matrix = matrix.concat([0, -1, 0]);
var convolution:ConvolutionFilter = new ConvolutionFilter();
convolution.matrixX = 3;
convolution.matrixY = 3;
convolution.matrix = matrix;
convolution.divisor = 1;
var filtersArray:Array = new Array(convolution);
tt.filters = filtersArray;
?
????? 光亮效果:
?????
????? AS代碼:
var matrix:Array = new Array();
matrix = matrix.concat([5, 5, 5]);
matrix = matrix.concat([5, 0, 5]);
matrix = matrix.concat([5, 5, 5]);
var convolution:ConvolutionFilter = new ConvolutionFilter();
convolution.matrixX = 3;
convolution.matrixY = 3;
convolution.matrix = matrix;
convolution.divisor = 30;
var filtersArray:Array = new Array(convolution);
tt.filters = filtersArray;
?
????? (9)置換圖濾鏡(DisplacementMapFilter)
????? 置換圖濾鏡使用BitmapData對象(稱為置換圖圖像)中的像素值在新對象上執行置換效果。通常,置換圖圖像與將要應用濾鏡的實際顯示對象不同。置換效果包括置換過濾的圖像中的像素,也就是說,將這些像素移開原始位置一定距離。此濾鏡可用于產生移位、扭曲或斑點效果。
????? 由于這個濾鏡本身比較復雜,要比較好的表現效果,又需要兩幅特定的圖,本人懶,就簡單的做一個平移效果吧。
?????
????? AS代碼:
var mapImage:BitmapData = new BitmapData(tt.width, tt.height, false, 0xFF0000);
var displacementMap = new DisplacementMapFilter();
displacementMap.mapBitmap = mapImage;
displacementMap.mapPoint = new Point(0, 0);
displacementMap.componentX = BitmapDataChannel.RED;
displacementMap.scaleX = 250;
var filtersArray:Array = new Array(displacementMap);
tt.filters = filtersArray;
?
????? 濾鏡這章到此就結束了,整個顯示編程也告一段落。但其實Flash里的顯示編程,內容很廣,包括我下章第一篇的文本,也是顯示編程的一部分。不過,我還是按照常用理解的習慣,歸納到元素這一塊去了。
轉載于:https://blog.51cto.com/windtoto/405985
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的AS3.0中的显示编程(末篇)-- 滤镜(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net/C#中Cache的用法
- 下一篇: HTML5学习笔记(一):初步印象