·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3之ConvolutionFilter滤镜的理解与代码示例

时间:2012-09-28 15:53CuPlayer.com
滤镜这个东西貌似很复杂,一时半会搞不明白,先记下搞明白的部分。ConvolutionFilter 是一个矩阵盘绕滤镜,这个滤镜其实不是AS3的新东西,flash8的时候就有了

   滤镜这个东西貌似很复杂,一时半会搞不明白,先记下搞明白的部分。ConvolutionFilter 是一个矩阵盘绕滤镜。(为什么叫盘绕我也不知道,估计就是周边像素混合运算的意思。)这个滤镜其实不是AS3的新东西,flash8的时候就有了。只不过,AS3里功能更强大点。(不过强大的功能我还不会),它的效果类似photoshop里的自定义滤镜。所以要做不同效果的话在photoshop里调好效果,然后把数值抄过来似乎是比较高效的方法。

下面是代码:

  1. //pic是库里的一张图片,不过这里有个没明白的事情:  
  2. //把图片设为“类”之后,构建这个p1的时候提示需要两个参数,而这两个参数的值我不知道有什么用。  
  3. var p1:pic=new pic(0,0);  
  4. //创建一个BitmapData对象,一会用他测试滤镜。(极酷播放器) 
  5. //也不是一定要BitmapData对象才可以用滤镜,对于所有显示对象都可以使用filters属性来应用滤镜。  
  6. var bmd:BitmapData=new BitmapData(500, 375);  
  7. //将p1绘制到bmdbmd里  
  8. bmd.draw(p1);  
  9. //矩阵的两个维度  
  10. var matrixX:Number = 3;  
  11. var matrixY:Number = 3;  
  12. //转换矩阵,数组长度必须是上面的matrixX和matrixY的乘积,  
  13. //这里代表就是个3×3的九宫格。这里的值产生的效果是“浮雕”  
  14. var matrix:Array = new Array(-2,-1,0,-1,1,1,0,1,2);  
  15. //总计算值的除数,用来调平色彩,最大的用处是控制亮度。等同于photoshop自定义滤镜里的那个缩放。  
  16. var divisor:Number=1;  
  17. //总计算值的偏差,等同于photoshop自定义滤镜里的那个位移。  
  18. var bias:Number=0;  
  19. //创建一个ConvolutionFilter滤镜对象  
  20. var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor,bias);  
  21. //应用滤镜,参数依次是:对象、对象区域、左上角坐标、滤镜。  
  22. bmd.applyFilter(bmd,bmd.rect,new Point(0,0),filter);  
  23. //BitmapData不是一个显示对象,所以还是需要Bitmap来显示一下。  
  24. var bm:Bitmap = new Bitmap(bmd);  
  25. addChild(bm); 

再记几种其他效果
模糊:
matrix=[1,1,1,1,1,1,1,1,1];
divisor=9;
锐化:
matrix=[0,-1,0,-1,5,-1,0,-1,0];
divisor=1;
查找边缘:
matrix=[0,1,0,1,-4,1,0,1,0];
divisor=0.5(极酷播放器www.89525.net

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器