用as做滤镜效果,每种滤镜效果对应一个类别,这些类别将来会在Macromedia\Flash 8\语系\First Run\Classes\FP8\flash\filters 这个资料夹中找到说明档
一、渐变斜角――GradientBevelFilter类别
二、投影――DropShadowFilter类别
三、模煳――BlurFilter类别(这个最容易了,参数少)
四、光晕――GlowFilter类别
五、渐层光晕――GradientGlowFilter类别
六、斜角――BevelFilter类别
做法是用new关键字新建一个相应类的对象,暂时就叫myfilters吧,然后把这个对象增加进一个数组filters_array,最后把这个数组赋值给mc的fliters属性,大功告成。
我想其中关键应该就是建立对像时如何设定里面的参数吧,我想滤镜的面板大家都很熟悉的了,那么,我就把as增加滤镜的一些参数和它们的面板相对照,这样可能更容易理解。
下面逐个举例(都是辅助里的范例啦,里面的参数名字都是可以改的,不过我觉得就用那些名字就蛮好),范例里都有函数setUpFlatRectangle(也有叫createRectangle的),是用来做一个方形mc的。
functionsetUpFlatRectangle(w:Number,h:Number,bgColor:Number,name:String):MovieClip{
varmc:MovieClip=this.createEmptyMovieClip(name,this.getNextHighestDepth());
mc.beginFill(bgColor);
mc.lineTo(w,0);
mc.lineTo(w,h);
mc.lineTo(0,h);
mc.lineTo(0,0);
returnmc;
}
直接把Script复制到主场景的第一影格就ok了,不要忘记上面的函数哦,要注意改函数名的
一、渐变斜角――GradientBevelFilter类别
Script:
importflash.filters.GradientBevelFilter;
importflash.filters.BitmapFilter;
varart:MovieClip=setUpFlatRectangle(150,150,0xCCCCCC,"gradientBevelFilterExample");
//建立新的mc,实例名:art
vardistance:Number=5;
varangleInDegrees:Number=225;//opposite45degrees
varcolors:Array=[0xFFFFFF,0xCCCCCC,0x000000];
varalphas:Array=[1,0,1];
varratios:Array=[0,128,255];
varblurX:Number=8;
varblurY:Number=8;
varstrength:Number=2;
varquality:Number=3;
vartype:String="inner";
varknockout:Boolean=true;//设定各个参数
varfilter:GradientBevelFilter=newGradientBevelFilter(distance,angleInDegrees,colors,alphas,ratios,blurX,blurY,strength,quality,type,knockout);//建立斜角滤镜对像filter
varfilterArray:Array=newArray();
filterArray.push(filter);//把filter增加进数组filterArray,如果art上有多个滤镜效果,就直接增加进这个数组好了
art.filters=filterArray;//将art的filters属性设定为filterArray
下面是Script中的参数和面板中的参数对比
colors、alphas、ratios用来控制渐变颜色的,colors是色彩,alphas是百分比(这里面是0~1的小数),ratios是偏移量0~255(可以参考Color类)blurX、blurY是就对应面板里的模煳x、模煳y。strength是面板里的强度,是0~255的数;quality是品质,只有1、2、3分别对应低、中、高distance是距离,预设4.0;type是类型,用字串表示,范例中的」inner」是内侧,还有outer、fuller;knockout是个布尔值,表示是否挖空
二、投影――DropShadowFilter类别
importflash.filters.DropShadowFilter;
varart:MovieClip=createRectangle(100,100,0x003366,"gradientGlowFilterExample");
vardistance:Number=20;
varangleInDegrees:Number=45;
varcolor:Number=0x000000;
varalpha:Number=0.8;
varblurX:Number=16;
varblurY:Number=16;
varstrength:Number=1;
varquality:Number=3;
varinner:Boolean=false;
varknockout:Boolean=false;
varhideObject:Boolean=false;
varfilter:DropShadowFilter=newDropShadowFilter(distance,angleInDegrees,color,alpha,blurX,blurY,strength,quality,inner,knockout,hideObject);
varfilterArray:Array=newArray();
filterArray.push(filter);
art.filters=filterArray;
下面是Script中的参数和面板中的参数对比
Distance是距离;
angleInDegrees是角度0~360
blurX、blurY是模煳x、模煳y
strength是强度,Script里是0~5的数
quality是品质,只能是1、2、3,分别对应低、中、高
inner是内侧阴影
knockout是挖空
hideObject是隐藏对像
三、模煳――BlurFilter类别(这个最容易了,参数少嘛)
importflash.filters.BlurFilter;
varrect:MovieClip=createRectangle(100,100,0x003366,"BlurFilterExample");
varblurX:Number=30;
varblurY:Number=30;
varquality:Number=3;
varfilter:BlurFilter=newBlurFilter(blurX,blurY,quality);
varfilterArray:Array=newArray();
filterArray.push(filter);
rect.filters=filterArray;
四、发光――GlowFilter类别
importflash.filters.GlowFilter;
varrect:MovieClip=createRectangle(100,100,0x003366,"gradientGlowFilterExample");
varcolor:Number=0x33CCFF;
varalpha:Number=.8;
varblurX:Number=35;
varblurY:Number=35;
varstrength:Number=2;
varquality:Number=3;
varinner:Boolean=false;
varknockout:Boolean=false;
varfilter:GlowFilter=newGlowFilter(color,alpha,blurX,blurY,strength,quality,inner,knockout);
varfilterArray:Array=newArray();
filterArray.push(filter);
rect.filters=filterArray;
五、渐变发光――GradientGlowFilter类别
importflash.filters.GradientGlowFilter;
varart:MovieClip=createRectangle(100,100,0x003366,"gradientGlowFilterExample");
vardistance:Number=0;
varangleInDegrees:Number=45;
varcolors:Array=[0xFFFFFF,0xFF0000,0xFFFF00,0x00CCFF];
varalphas:Array=[0,1,1,1,1];
varratios:Array=[0,63,126,255];
varblurX:Number=50;
varblurY:Number=50;
varstrength:Number=2.5;
varquality:Number=3;
vartype:String="outer";
varknockout:Boolean=false;
varfilter:GradientGlowFilter=newGradientGlowFilter(distance,angleInDegrees,colors,alphas,ratios,blurX,blurY,strength,quality,type,knockout);
varfilterArray:Array=newArray();
filterArray.push(filter);
art.filters=filterArray;
这里的参数跟光晕的类别很像,需要说明的就是用来设定颜色的那几个数组里的4项依次是表示从外到内的颜色的
六、斜角――BevelFilter类别
importflash.filters.BevelFilter;
vardistance:Number=5;
varangleInDegrees:Number=45;
varhighlightColor:Number=0xFFFF00;
varhighlightAlpha:Number=1;
varshadowColor:Number=0x0000FF;
varshadowAlpha:Number=1;
varblurX:Number=10;
varblurY:Number=10;
varstrength:Number=2;
varquality:Number=3;
vartype:String="inner";
varknockout:Boolean=false;
varfilter:BevelFilter=newBevelFilter(distance,angleInDegrees,highlightColor,highlightAlpha,shadowColor,shadowAlpha,blurX,blurY,strength,quality,type,knockout);
varrect:MovieClip=createRectangle(100,100,0x00CC00,"bevelFilterExample");
rect.filters=newArray(filter);
参数:
highlightColor、highlightAlpha设定加亮颜色
shadowColor、shadowAlpha设定阴影颜色