AS3.0中的显示编程(末篇)-- 滤镜(下)
2010-10-15 09:43
218 查看
剩下的三种滤镜,因为我自己也不是很懂矩阵啊这些的,只能做些简单的范例和说明了,抱歉!颜色矩阵滤镜、卷积滤镜、置换图滤镜这三种滤镜只能通过AS代码实现。如果说上面的六种滤镜,只是在原图的基础上做些简单的修改,那么这三种滤镜,就可以称之为大手术了,让我们继续往下看:
(7)颜色矩阵滤镜(ColorMatrixFilter)
颜色矩阵滤镜用于过滤显示对象的颜色和Alpha值。可以进行饱和度的更改、色相旋转、将亮度更改为 Alpha,以及生成其它颜色操作效果等等。
我这边举一个例子,大家先看效果图:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107002q2Rp.jpg)
在那些全国悲伤的日子,我们需要停止娱乐节目,把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对象或显示对象应用一些特殊的图像变形,如模糊、锐化、浮雕、背反、光亮等。
模糊效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107003srCD.jpg)
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;
锐化效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107003oQ9r.jpg)
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;
浮雕效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107004sCA6.jpg)
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;
背反效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107005hMsx.jpg)
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;
光亮效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107005V2Zo.jpg)
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对象(称为置换图图像)中的像素值在新对象上执行置换效果。通常,置换图图像与将要应用滤镜的实际显示对象不同。置换效果包括置换过滤的图像中的像素,也就是说,将这些像素移开原始位置一定距离。此滤镜可用于产生移位、扭曲或斑点效果。
由于这个滤镜本身比较复杂,要比较好的表现效果,又需要两幅特定的图,本人懒,就简单的做一个平移效果吧。
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107006a9nx.jpg)
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里的显示编程,内容很广,包括我下章第一篇的文本,也是显示编程的一部分。不过,我还是按照常用理解的习惯,归纳到元素这一块去了。
(7)颜色矩阵滤镜(ColorMatrixFilter)
颜色矩阵滤镜用于过滤显示对象的颜色和Alpha值。可以进行饱和度的更改、色相旋转、将亮度更改为 Alpha,以及生成其它颜色操作效果等等。
我这边举一个例子,大家先看效果图:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107002q2Rp.jpg)
在那些全国悲伤的日子,我们需要停止娱乐节目,把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对象或显示对象应用一些特殊的图像变形,如模糊、锐化、浮雕、背反、光亮等。
模糊效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107003srCD.jpg)
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;
锐化效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107003oQ9r.jpg)
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;
浮雕效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107004sCA6.jpg)
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;
背反效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107005hMsx.jpg)
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;
光亮效果:
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107005V2Zo.jpg)
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对象(称为置换图图像)中的像素值在新对象上执行置换效果。通常,置换图图像与将要应用滤镜的实际显示对象不同。置换效果包括置换过滤的图像中的像素,也就是说,将这些像素移开原始位置一定距离。此滤镜可用于产生移位、扭曲或斑点效果。
由于这个滤镜本身比较复杂,要比较好的表现效果,又需要两幅特定的图,本人懒,就简单的做一个平移效果吧。
![](http://windtoto.blog.51cto.com/attachment/201010/15/1986737_1287107006a9nx.jpg)
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里的显示编程,内容很广,包括我下章第一篇的文本,也是显示编程的一部分。不过,我还是按照常用理解的习惯,归纳到元素这一块去了。
相关文章推荐
- AS3.0中的显示编程(八)-- 滤镜(中) 推荐
- AS3.0中的显示编程(七)-- 滤镜(上)
- AS3.0中的显示编程(一) -- 显示编程的基础知识 推荐
- AS3.0中的显示编程(二)-- DisplayObject类
- AS3.0中的显示编程(三)-- 缓存显示对象
- AS3.0中的显示编程(六)-- 几何结构
- [轉]AS3.0编程 显示对象简介
- AS3.0中的显示编程(四)-- DisplayObjectContainer
- AS3.0中的显示编程(五)-- Loader(加载器) 推荐
- AS3.0编程 滤镜类及应用
- Quartz 2D编程指南(13) - PDF文档的创建、显示及转换
- Java并发编程之显示锁ReentrantLock和ReadWriteLock读写锁
- ios网络编程网络接口里边含有汉字不能转换成NSURL并且调试显示为空
- 让png格式图片在网页中透明显示,让IE8支持半透明效果滤镜
- 至简至美的在线编程网站Anycodes.cn开放啦!支持六种编程语言,语法高亮,行数显示,和代码自动折叠。
- 一起去看小学期之Android编程 - 图片浏览显示
- Quartz 2D编程指南(3) - PDF文档的创建、显示及转换
- [Unity3D]Shader编程之扫描显示
- 用myeclipse编程时,不停跳出提示框,显示"selection job titles has encountered a problem error retrieving AST from Pr
- “AS3.0高级动画编程”学习:第一章高级碰撞检测