AS3.0中的显示编程(末篇)-- 滤镜(下)

简介:

     剩下的三种滤镜,因为我自己也不是很懂矩阵啊这些的,只能做些简单的范例和说明了,抱歉!颜色矩阵滤镜、卷积滤镜、置换图滤镜这三种滤镜只能通过AS代码实现。如果说上面的六种滤镜,只是在原图的基础上做些简单的修改,那么这三种滤镜,就可以称之为大手术了,让我们继续往下看:

 

7)颜色矩阵滤镜(ColorMatrixFilter

      颜色矩阵滤镜用于过滤显示对象的颜色和Alpha值。可以进行饱和度的更改、色相旋转、将亮度更改为 Alpha,以及生成其它颜色操作效果等等。

      我这边举一个例子,大家先看效果图:

      clip_image002

      在那些全国悲伤的日子,我们需要停止娱乐节目,把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对象或显示对象应用一些特殊的图像变形,如模糊、锐化、浮雕、背反、光亮等。

      模糊效果:

      clip_image004

      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;

 

      锐化效果:

      clip_image006

      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;

 

      浮雕效果:

      clip_image008

      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;

 

      背反效果:

      clip_image010

      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;

 

      光亮效果:

      clip_image012

      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对象(称为置换图图像)中的像素值在新对象上执行置换效果。通常,置换图图像与将要应用滤镜的实际显示对象不同。置换效果包括置换过滤的图像中的像素,也就是说,将这些像素移开原始位置一定距离。此滤镜可用于产生移位、扭曲或斑点效果。

      由于这个滤镜本身比较复杂,要比较好的表现效果,又需要两幅特定的图,本人懒,就简单的做一个平移效果吧。

      clip_image014

      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里的显示编程,内容很广,包括我下章第一篇的文本,也是显示编程的一部分。不过,我还是按照常用理解的习惯,归纳到元素这一块去了。










本文转自 windtoto 51CTO博客,原文链接:http://blog.51cto.com/windtoto/405985,如需转载请自行联系原作者
目录
相关文章
|
XML 移动开发 数据格式
html5为什么只需要写<!doctype html>? 有多少种Doctype文档类型?
html5为什么只需要写<!doctype html>? 有多少种Doctype文档类型?
356 0
|
9月前
|
弹性计算 运维 负载均衡
阿里云渠道商:阿里云弹性公网IP是什么?
阿里云弹性公网IP(EIP)实现IP与计算资源解耦,支持灵活绑定、动态切换,提升业务稳定性和网络灵活性,广泛应用于高可用架构、成本优化及跨境访问场景。
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
801 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
存储 固态存储 NoSQL
阿里云服务器ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘区别与选型参考
阿里云系统盘与数据盘如何选择?目前阿里云服务器的云盘主要有ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘可供选择,很多新手用户并不清楚他们之间的区别,也就不知道应该如何选择,因为不同的云盘在最大IOPS、最大吞吐量等性能上是有区别的。本文基于阿里云官方技术文档,结合实际应用案例,对ESSD AutoPL、ESSD PL-X、SSD云盘等主要云盘的区别做个介绍,以供参考,助您构建高性能、高可靠、高扩展的存储架构。
|
前端开发 容器
CSS:BFC(Block Formatting Context 块级格式化上下文)
CSS:BFC(Block Formatting Context 块级格式化上下文)
327 0
|
资源调度 算法 计算机视觉
图像处理之积分图应用二(快速边缘保留滤波算法)
图像处理之积分图应用二(快速边缘保留滤波算法)
239 0
|
开发框架 前端开发 JavaScript
探索前端开发框架:React、Angular 和 Vue 的对决(二)
探索前端开发框架:React、Angular 和 Vue 的对决(二)
|
JavaScript 前端开发 Android开发
js 功能-touch 事件(绑定&触摸点) |学习笔记
快速学习 js 功能-touch 事件(绑定 &触摸点)
1101 0
js 功能-touch 事件(绑定&触摸点) |学习笔记
|
JavaScript 编译器
热爱函数式的你,句句纯正的 Haskell【库函数篇】
本篇是笔记篇,介绍 Haskell 的强大的库函数,也可感受下与我们平常的 js 操作异同之处:
热爱函数式的你,句句纯正的 Haskell【库函数篇】

热门文章

最新文章