• Flash/Flex学习笔记(22):滤镜学习


    Silverlight中称之为“效果(Effect)”的东东,在Flash里叫“滤镜(Filter)",而且Flash里内置的滤镜要比Silverlight丰富很多,几乎所有对象都有一个filters的属性,它是一个数组,可以将一个或多个滤镜同时应用于某一对象,类似的,如果要去除已经应用的滤镜效果,只要将filters数组清空即可

    view source

    print?

    01
    var _data:DataProvider  = new DataProvider();

    02

    03
    _data.addItem({label:"不应用任何滤镜",data:""});

    04
    _data.addItem({label:"Blur(模糊滤镜)",data:"Blur"});

    05
    _data.addItem({label:"Drop shadow(投影滤镜)",data:"DropShadow"});

    06
    _data.addItem({label:"Glow(发光滤镜)",data:"Glow"});

    07
    _data.addItem({label:"Gradient bevel(渐变斜角滤镜)",data:"GradientBevel"});

    08
    _data.addItem({label:"Convolution(卷积滤镜)",data:"Convolution"});

    09
    _data.addItem({label:"Blur(模糊滤镜)+DropShadow(投影滤镜)",data:"Blur&DropShadow"});

    10

    11
    cbo1.dataProvider=_data;

    12

    13
    cbo1.addEventListener(Event.CHANGE,ChangeHandler);

    14

    15
    function ChangeHandler(e:Event):void {

    16
    var _item:Object = (e.currentTarget as ComboBox).selectedItem;

    17
    //trace(_item.data);

    18
    switch (_item.data) {

    19
    case "Blur" :

    20
    img.filters=[new BlurFilter(5,5,3)];

    21
    break;

    22
    case "DropShadow" :

    23
    var _shadow:DropShadowFilter = new DropShadowFilter();

    24
    _shadow.distance=10;

    25
    _shadow.alpha=0.3;

    26
    img.filters=[_shadow];

    27
    break;

    28
    case "Glow" :

    29
    img.filters=[new GlowFilter(0xffff99,0.5,40,40,3,1,false)];

    30
    break;

    31
    case "GradientBevel" :

    32
    var bgColor:uint=0xCCCCCC;

    33
    var size:uint=80;

    34
    var offset:uint=50;

    35
    var distance:Number=5;

    36
    var angleInDegrees:Number=225;// opposite 45 degrees

    37
    var colors:Array=[0xFFFFFF,0xCCCCCC,0x000000];

    38
    var alphas:Array=[1,0.1,1];

    39
    var ratios:Array=[0,128,255];

    40
    var blurX:Number=8;

    41
    var blurY:Number=8;

    42
    var strength:Number=2;

    43
    var quality:Number=BitmapFilterQuality.HIGH;

    44
    var type:String=BitmapFilterType.FULL;

    45
    var knockout:Boolean=false;

    46

    47
    img.filters = [new GradientBevelFilter(distance,

    48
    angleInDegrees,

    49
    colors,

    50
    alphas,

    51
    ratios,

    52
    blurX,

    53
    blurY,

    54
    strength,

    55
    quality,

    56
    type,

    57
    knockout)];

    58
    break;

    59
    case "Convolution" :

    60
    var clamp:Boolean=false;

    61
    var clampColor:Number=0xFF0000;

    62
    var clampAlpha:Number=1;            

    63
    var bias:Number=0;

    64
    var preserveAlpha:Boolean=false;            

    65
    var matrixCols:Number=3;

    66
    var matrixRows:Number=3;

    67
    var matrix:Array = [ 1,1,1,

    68
    1,1,1,

    69
    1,1,1 ];

    70

    71
    var filter:ConvolutionFilter=new ConvolutionFilter(matrixCols,matrixRows,matrix,matrix.length,bias,preserveAlpha,clamp,clampColor,clampAlpha);

    72

    73
    img.filters=[filter];

    74
    break;

    75
    case "Blur&DropShadow" :

    76
    var _shadow2:DropShadowFilter = new DropShadowFilter();

    77
    _shadow2.distance=10;

    78
    _shadow2.alpha=0.3;         

    79
    img.filters=[new BlurFilter(5,5,3),_shadow2];

    80
    break;

    81
    case "" :

    82
    default :

    83
    img.filters=[];

    84
    break;

    85
    }

    86

    87
    }

    view source

    print?

    01
    package {

    02
    import flash.display.Sprite;

    03
    import flash.events.Event;

    04
    import flash.filters.DropShadowFilter;

    05
    import flash.filters.BlurFilter;

    06
    public class DynamicFilter extends Sprite {

    07

    08
    private var dropShadowFilter:DropShadowFilter;

    09
    private var blurFilter:BlurFilter;

    10

    11

    12
    public function DynamicFilter() {

    13
    init();

    14
    }

    15

    16
    private function init():void {

    17
    //注:mm是舞台上的一个图片实例

    18
    mm.x = stage.stageWidth/2;

    19
    mm.y = stage.stageHeight/2;

    20

    21
    dropShadowFilter = new DropShadowFilter();

    22
    dropShadowFilter.alpha = 0.3;

    23
    blurFilter = new BlurFilter();

    24

    25
    addEventListener(Event.ENTER_FRAME, EnterFrameHandler);

    26
    }

    27

    28
    private function EnterFrameHandler(event:Event):void {

    29
    var dx:Number = mouseX - mm.x;

    30
    var dy:Number = mouseY - mm.y;

    31
    dropShadowFilter.distance =  - Math.sqrt(dx*dx+dy*dy)/10;

    32
    dropShadowFilter.angle = Math.atan2(dy,dx)*180/Math.PI;

    33
    blurFilter.blurX = Math.abs(dx)/30;

    34
    blurFilter.blurY = Math.abs(dy)/30;

    35
    mm.filters = [blurFilter,dropShadowFilter];

    36
    }

    37
    }

    38
    }

  • 相关阅读:
    webbench之使用(二)
    webbench之编译安装(一)
    Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
    OneThink开发框架
    性能瓶颈调优
    Jmeter之Web端HTTP性能测试(九)
    RobotFramework自动化测试之脚本编写(一)
    LoadRunner之安装、破解、汉化教程(一)
    Java学习之Thread方法
    Java学习之线程通信(多线程(Lock))--生产者消费者
  • 原文地址:https://www.cnblogs.com/happysky97/p/1884523.html
Copyright © 2020-2023  润新知