仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 918|回复: 8
打印 上一主题 下一主题

[学习教程] 带来一篇Flash as进门(15):filters类滤镜-Flash actionscript

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-15 20:52:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这个播放器非常小,只需花一点点时间下载,对于在体验网页上的多媒体效果是个很好的开始。
本例持续解说AS的基本常识,明天我们来进修FlashAS进门系列教程第七课:影片剪辑第9节利用滤镜,教程具体解说了Flash的filters类为我们供应的9种滤镜效果,并用实例作了申明,对Flash的AS编程有乐趣的伴侣能够到论坛与作者交换。
上一篇文章:Flashas进门(14):用AS完成补间动画
用AS完成滤镜效果、
利用滤镜
Flash的filters类为我们供应了9种滤镜效果,要用AS完成滤镜效果,起首仍旧需导进filters类:
importflash.filters.*;
然后,利用new机关函数,创立一个filters工具,并将它赋值给MC(或文本或按钮)的filters属性从而完成滤镜效果。
上面分离先容这些滤镜效果:

1.含混滤镜:BlurFilter
BlurFilter类能够带来含混的效果。要创立BlurFilter实例可用上面的办法:
varfilter:BlurFilter=newBlurFilter(blurX,blurY,quality);
在BlurFilter的机关函数中利用了三个参数:
blurX:程度含混量。无效值为0到255(浮点值)。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
blurY:D垂直含混量。无效值为0到255(浮点值)。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
quality:D使用滤镜的次数。默许值是1,即暗示低品德。值为2暗示中等品德,值为3暗示高品德而且靠近高斯含混。
上面仍是用一个实习来熟习含混滤镜的使用。
导进一张图片将它做成MC,放到舞台上,实例称号为:my_mc.
然后翻开帧举措面板,输出以下代码:
importflash.filters.*
varfilter:BlurFilter=newBlurFilter(8,8,3);
my_mc.filters=[filter];
测试影片,这时候图片已变含混了。效果以下:

我们乃至能够在运转时改动含混滤镜的参数,使含混效果是可变的,好比依据鼠标的地位发生分歧的含混效果。将代码改成上面的:

importflash.filters.*
varfilter:BlurFilter=newBlurFilter(8,8,3);
my_mc.filters=[filter];
onMouseMove=function(){
bx=Math.abs(_xmouse-my_mc._x);
by=Math.abs(_ymouse-my_mc._y);
filter.blurX=bx/10;
filter.blurY=by/10;
my_mc.filters=[filter];
}
测试影片,当鼠标挪动时,含混效果产生变更,鼠标距图片中央越远,含混效果越深。效果以下:



2.投影滤镜:DropShadowFilter

DropShadowFilter滤镜将发生投影的效果。要创立投影滤镜可用:
varfilter:DropShadowFilter=newDropShadowFilter(distance,angleInDegrees,color,alpha,blurX,blurY,strength,quality,inner,knockout,hideObject);

投影影滤镜的参数对照多哈,仍是一个一个先容一下:

distance:D暗影的偏移间隔,以像素为单元。默许值是4(浮点)。
angle:D暗影的角度,0到360˚(浮点)。默许值是45。
color:D暗影色彩,接纳十六进制格局0xRRGGBB。默许值是0x000000。
alpha:D暗影色彩的Alpha通明度值。无效值为0到1。比方,0.25设置通明度值为25%。默许值是1。
blurX:D程度含混量。无效值为0到255(浮点)。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
blurY:D垂直含混量。无效值为0到255(浮点)。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
strength:D压印或跨页的强度。该值越高,压印的色彩越深,并且暗影与背景之间的对照度也越强。无效值为0到255。默许值是1。
quality:D使用滤镜的次数。无效值为0到15。默许值是1,它暗示低品德。值为2暗示中等品德,值为3暗示高品德。
inner:D暗示暗影是不是为内侧暗影。值true指定内侧暗影。默许为false,即外侧暗影,它暗示工具外缘四周的暗影。
knockout:D使用挖空效果(true),这将无效地使工具的填色变成通明,并显现文档的背景色彩。默许值是false,即不该用挖空效果。
hideObject:D暗示是不是埋没工具。假如值为true,则暗示没有绘制工具自己,只要暗影是可见的。默许值是false(显现工具)。

做个实习,将下面实习的代码改成:

importflash.filters.*
varfilter:DropShadowFilter=newDropShadowFilter();
my_mc.filters=[filter];
测试影片,效果以下:图片发生了投影效果。由于投影滤镜的一切参数都是可选的,以是我们没有给任何参数,即都利用默许值。
一样的我们能够在运时改动投影的参数,从而改动效果。我们将这个效果改动加在图片的点击事务上,即点击图片投影效果产生改动。这里改动了三个参数,偏移量,色彩(随机)和角度。

效果:


代码以下:

importflash.filters.*
varfilter:DropShadowFilter=newDropShadowFilter();
my_mc.filters=[filter];
vari=1;
my_mc.onRelease=function():Void{
if(filter.distance<5){
i=1;
}elseif(filter.distance>30){
i=-1;
}
filter.distance+=i;
filter.color=random(16000000);
filter.angle++;
my_mc.filters=[filter];
}



3.发光滤镜:GlowFilter
机关函数:
varfilter:GlowFilter=newGlowFilter(color,alpha,blurX,blurY,strength,quality,inner,knockout);
参数:
color:D光晕色彩,接纳十六进制格局0xRRGGBB。默许值是0xFF0000。
alpha:D色彩的Alpha通明度值。无效值为0到1。比方,.25设置通明度值为25%。默许值是1。
blurX:D程度含混量。无效值为0到255(浮点)。默许值是6。作为2的乘方的值(如2、4、8、16和32)经由了优化,它的出现速率会比别的值更快。
blurY:D垂直含混量。无效值为0到255(浮点)。默许值是6。作为2的乘方的值(如2、4、8、16和32)经由了优化,它的出现速率会比别的值更快。
strength:D压印或跨页的强度。该值越高,压印的色彩越深,并且发光与背景之间的对照度也越强。无效值为0到255。默许值是2。
quality:D使用滤镜的次数。无效值为0到15。默许值是1,它暗示低品德。值为2暗示中等品德,值为3暗示高品德。
inner:D指定发光是不是为内侧发光。值true暗示内侧发光。默许值是false,即外侧发光,它暗示工具外缘四周的发光。
knockout:D指定工具是不是具有挖空效果。值为true将使工具的添补变成通明,并显现文档的背景色彩。默许值是false(不该用挖空效果)。
效果:点击图片效果产生变更。

代码以下:

importflash.filters.*
varfilter:GlowFilter=newGlowFilter();
my_mc.filters=[filter];
vari=1;
varj=0.1;
my_mc.onRelease=function():Void{
if(filter.blurX<5){
i=1;
}elseif(filter.blurX>250){
i=-1;
}
if(filter.alpha<3){
j=0.1;
}elseif(filter.alpha>8){
j=-0.1;
}
filter.blurX+=i;
filter.blurY+=i;
filter.color=random(16000000);
filter.alpha+=j;
my_mc.filters=[filter];
}


4.突变发光滤镜:GradientGlowFilter
机关函数:
varfilter:GradientGlowFilter=newGradientGlowFilter(distance,angleInDegrees,colors,alphas,ratios,blurX,blurY,strength,quality,type,knockout);

参数:
distance:D光晕的偏移间隔。默许值为4。
angle:D角度,以度为单元。无效值为0到360。默许值是45。
colors:D界说突变的色彩的数组。比方,白色为0xFF0000,蓝色为0x0000FF,依此类推。
alphas:Dcolors数组中对应色彩的Alpha通明度值的数组。数组中每一个元素的无效值为0到1。比方,值为.25设置Alpha通明度值为25%。
ratios:D色彩散布比例的数组。无效值为0到255。该值界说宽度的百分比,色彩采样率为100%。
blurX:D程度含混量。无效值为0到255。假如含混量小于即是1,则标明原始图象是按原样复制的。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
blurY:D垂直含混量。无效值为0到255。假如含混量小于即是1,则标明原始图象是按原样复制的。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
strength:D压印或跨页的强度。该值越高,压印的色彩越深,并且发光与背景之间的对照度也越强。无效值为0到255。值越年夜,压印越强。值为0意味着未使用滤镜。默许值是1。
quality:D使用滤镜的次数。无效值为0到15。默许值是1,它暗示低品德。值为2暗示中等品德,值为3暗示高品德。
type:D滤镜效果的安排。大概的值包含:
"outer":工具外缘上的发光
"inner":工具内缘上的发光;默许值
"full":工具顶部的发光
效果:

代码:

importflash.filters.*
varfilter:GradientGlowFilter=newGradientGlowFilter();
filter.colors=[0xFFFFFF,0xFF0000,0xFFFF00,0x00CCFF];
filter.alphas=[0.3,0.5,0.5,0.5];
filter.ratios=[0,63,126,255];
filter.blurX=50;
filter.blurY=50;
filter.type="outer";
my_mc.filters=[filter];


5.斜角滤镜:BevelFilter(斜角滤镜可发生三维效果。)
机关函数:
varfilter:BevelFilter=newBevelFilter(distance,angleInDegrees,highlightColor,highlightAlpha,shadowColor,shadowAlpha,blurX,blurY,strength,quality,type,knockout);
参数:
distance:D斜角的偏移间隔,以像素为单元(浮点)。默许值是4。
angle:D斜角的角度,0至360度。默许值是45。
highlightColor:D斜角的加亮色彩0xRRGGBB。默许值是0xFFFFFF。
highlightAlpha:D加亮色彩的Alpha通明度值。无效值为0到1。比方,.25设置通明度值为25%。默许值是1。
shadowColor:D斜角的暗影色彩0xRRGGBB。默许值是0x000000。
shadowAlpha:D暗影色彩的Alpha通明度值。无效值为0到1。比方,0.25设置通明度值为25%。默许值是1。
blurX:D程度含混量,以像素为单元。无效值为0到255(浮点)。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
blurY:D垂直含混量,以像素为单元。无效值为0到255(浮点)。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
strength:D压印或跨页的强度。该值越年夜,压印的色彩越深,并且斜角与背景之间的对照度也越强。无效值为0到255。默许值是1。
quality:D使用滤镜的次数。默许值是1,即暗示低品德。值为2暗示中等品德,值为3暗示高品德。
type:D斜角的范例。无效值为"inner"、"outer"和"full"。默许值为"inner"。
knockout:D使用挖空效果(true),这将无效地使工具的填色变成通明,并显现文档的背景色彩。默许值是false(不该用挖空效果)。
效果:

代码:

importflash.filters.*
varfilter:BevelFilter=newBevelFilter();
filter.distance=8;
filter.highlightColor=0xcccccc;
my_mc.filters=[filter];
你能够调剂别的参数,创立分歧的效果。


6.突变斜角滤镜:GradientBevelFilter
机关函数:
varfilter:GradientBevelFilter=newGradientBevelFilter(distance,angleInDegrees,colors,alphas,ratios,blurY,quality,type,knockout);
参数:
distance:D偏移间隔。无效值为0到8。默许值为4。
angle:D角度,以度为单元。无效值为0到360。默许值是45。
colors:D突变中利用的RGB十六进制色彩值的数组。比方,白色为0xFF0000,蓝色为0x0000FF,依此类推。
alphas:Dcolors数组中对应色彩的Alpha通明度值的数组。数组中每一个元素的无效值为0到1。比方,.25设置通明度值为25%。
ratios:D色彩散布比例的数组;无效值为0到255。
blurX:D程度含混量。无效值为0到255。假如含混量小于即是1,则标明原始图象是按原样复制的。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
blurY:D垂直含混量。无效值为0到255。假如含混量小于即是1,则标明原始图象是按原样复制的。默许值是4。作为2的乘方的值(如2、4、8、16和32)经由了优化,出现速率比别的值更快。
strength:D压印或跨页的强度。该值越高,压印的色彩越深,并且斜角与背景之间的对照度也越强。无效值为0到255。值为0标明没有使用滤镜。默许值是1。
quality:D滤镜的质量。无效值为0到15。默许值是1。几近在一切情形下,有效值都是1(低品德)、2(中等品德)和3(高品德)。滤镜的值越小,出现速率越快。
type:D斜角效果的安排。大概的值包含:
"outer":工具外缘上的斜角
"inner":工具内缘上的斜角
"full":工具顶部的斜角
默许值为"inner"。
knockout:D指定是不是使用挖空效果。值为true将使工具的添补变成通明,并显现文档的背
效果:

代码:

varfilter:GradientBevelFilter=newGradientBevelFilter();
filter.colors=[0x005500,0x005588,0xffffff,0x00aa00];;
filter.alphas=[1,1,0,1];
filter.ratios=[0,64,128,255];
filter.blurX=20;
filter.blurY=20;
filter.distance=32;
my_mc.filters=[filter];


7.矩阵色彩滤镜:ColorMatrixFilter
利用这个滤镜能够将一个4x5的矩阵应到MC(或位图)上,从面改动MC的色相,通明度及亮度等。我想这个滤镜的难点应当是对这个矩阵的了解上。RGB色彩由红绿蓝三种色构成,矩阵将各像素色彩拆分红红绿蓝三种色另加一个通明度。共四个通道。每一个通道由5组值构成这就构成了一个4x5的矩阵。看看下图,来了解一下:
红绿蓝通明度了局
白色10000
绿色01000
蓝色00100
通明度000N0(N为0.1-1)
从下面的矩阵中可看出,每一个通道在其响应的地位设置了值,最小是0,最年夜为1,改动这些值便可改动图像的色相及通明度。了局的数值改动可改动图像的亮度。好比将矩阵中白色通道的值由1改成0.5,那末图像中的白色元素将会下降。
在实践使用中,将这个矩阵赋值给一个数组,再将这个数组作为ColorMatrixFilter类机关函数的参数,最初将MC的filters属性设为ColorMatrixFilter类的实例。这同利用别的滤镜一样。
先来做一个增添图片亮度的实习:
效果:

将代码改成:

importflash.filters.*;
varmatrix:Array=newArray();
matrix=matrix.concat([1,0,0,0,100]);//red
matrix=matrix.concat([0,1,0,0,100]);//green
matrix=matrix.concat([0,0,1,0,100]);//blue
matrix=matrix.concat([0,0,0,1,0]);//alpha
varfilter:ColorMatrixFilter=newColorMatrixFilter(matrix);
my_mc.filters=[filter];
测试影片,能够片到图片亮度被增年夜了良多。这是将矩阵中红绿蓝通道的了局值都改成了100失掉的了局。
上面一个实习是静态改动红绿蓝三种色的值,从而改动色相。经由过程鼠标在屏幕上的地位来断定各色彩的值,当鼠标挪动时静态改动。
效果:

代码:

importflash.filters.*;
onMouseMove=function(){
varxPercent:Number=1-(_xmouse/Stage.width);
varyPercent:Number=1-(_ymouse/Stage.height);
varmatrix:Array=newArray();
matrix=matrix.concat([yPercent,0,0,0,0]);//red
matrix=matrix.concat([0,xPercent,0,0,0]);//green
matrix=matrix.concat([0,0,xPercent,0,0]);//blue
matrix=matrix.concat([0,0,0,1,0]);//alpha
varfilter:ColorMatrixFilter=newColorMatrixFilter(matrix);
my_mc.filters=[filter];
}


8.卷积滤镜:ConvolutionFilter
卷积滤镜一样用一个矩阵于图像可构成如含混、边沿检测、锐化、浮雕和斜角等多种效果。卷积滤镜从头盘算每一个像素,并依据矩阵将像素及其四周的象素要加得也该像素的新色彩。最经常使用的矩阵是3x3的矩阵,以下图:
NNN
NPN
NNN
在这个矩阵中P代表自己的像素,而N代表四周的像素。那末上面这个矩阵:
000
010
000
能够看出将这个矩阵用于图像时,图像没有变更,由于除自已外四周的像素均为0,即四周像素对两头的P像素没有影响。
将矩阵存进一个数组,并将它作为ConvolutionFilter类机关函数的一个参数,可完成卷积滤镜效果,除矩阵参数处ConvolutionFilter机关函数另有别的的一些参数:
matrixXD矩阵的x维度(矩阵中列的数量)。默许值是0。
matrixY:D矩阵的y维度(矩阵中行的数量)。默许值是0。
matrix:D用于矩阵转换的值的数组;前往一个正本。数组中的项数必需即是matrixX*matrixY。
divisor:D矩阵转换中利用的除数。默许值是1。这个参数假如与矩阵值的总和相称,那末图像的亮度无变更。好比这个矩阵:
010
111
010
内里有5个1,那末矩阵总值为5,假如divisor参设为5,则图像的亮度无变更。假如本参数为1,那末图像的亮度是原始图片象的5/1倍,这时候图像就很亮了。假如本参数为10,那末原始图片片的亮度为5/10,明显图片就变暗了。
bias:D要增加到矩阵转换了局的偏向。默许值是0。
preserveAlpha:D值为false标明卷积使用于一切通道,包含Alpha通道。值为true暗示只对色彩通道使用卷积。默许值为true。
clamp:D关于源图象以外的像素,假如值为true,则标明经由过程复制输出图象给定边沿处的色彩值,沿着输出图象的每一个边框按必要扩大输出图象。假如值为false,则标明应依照color和alpha属性中的指定利用别的色彩。默许值是true。
color:D要交换源图象以外的像素的十六进制色彩。
alpha:D交换色彩的Alpha。
上面是几个基础效果的矩阵:
基础含混(除数5):
010
111
010
锐化(除数1):
0,-1,0
-1,5,-1
0,-1,0
边沿检测(除数1):
0,-1,0
-1,4,-1
0,-1,0
浮雕效果(除数1):
-2,-1,0
-1,1,1
0,1,2
实习:将下面几个矩阵效果使用于图片,点击图片一次,变更一种效果。
效果:

代码:

importflash.filters.*;
vari=0;
my_mc.onRelease=function(){
i++;
if(i>4){
i=1;
}

switch(i){
case1:
varmatrixArr:Array=[0,1,0,1,1,1,0,1,0];
varconvolution:ConvolutionFilter=newConvolutionFilter(3,3,matrixArr,5);
my_mc.filters=[convolution];
break;
case2:
varmatrixArr:Array=[0,-1,0,-1,5,-1,0,-1,0];
varconvolution:ConvolutionFilter=newConvolutionFilter(3,3,matrixArr,1);
my_mc.filters=[convolution];
break;
case3:
varmatrixArr:Array=[0,-1,0,-1,4,-1,0,-1,0];
varconvolution:ConvolutionFilter=newConvolutionFilter(3,3,matrixArr,1);
my_mc.filters=[convolution];
break;
case4:
varmatrixArr:Array=[-2,-1,0,-1,1,1,0,1,2];
varconvolution:ConvolutionFilter=newConvolutionFilter(3,3,matrixArr,1);
my_mc.filters=[convolution];
break;

}
}


图片置换滤镜:
mapBitmap:D包括置换映照数据的BitmapData工具。
mapPoint:D一个flash.geom.Point值,它包括方针影片剪辑的左上角与映照图象左上角之间的偏移量。
componentX:D申明在映照图象中利用哪一个色彩通道来置换x了局。大概的值以下所示:
&bull;1(白色)
&bull;2(绿色)
&bull;4(蓝色)
&bull;8(alpha)
componentY:D申明在映照图象中利用哪一个色彩通道来置换y了局。大概的值以下所示:
&bull;1(白色)
&bull;2(绿色)
&bull;4(蓝色)
&bull;8(alpha)
scaleX:D用于缩放映照盘算的x置换了局的乘数。
scaleY:D用于缩放映照盘算的y置换了局的乘数。
mode:[可选]D滤镜的形式。大概的值以下所示:
"wrap"--将置换值折返到源图象的另外一侧。
"clamp"--将置换值锁定在源图象的边沿。
"ignore"--假如置换值超越了局限,则疏忽置换并利用源像素。
"color"--假如置换值在图象外,则交换由滤镜的alpha属性和color属性构成的像素值。
color:[可选]D指定关于超越局限的替换使用甚么色彩。置换的无效局限是0.0到1.0。假如mode设置为"color",则利用此参数。
alpha:[可选]D指定关于超越局限的交换使用甚么Alpha值。它被指定为0.0到1.0之间的尺度值。比方,0.25设置通明度值为25%。默许值是0。假如mode设置为"color",则利用此参数。

代码:

importflash.filters.DisplacementMapFilter;
importflash.geom.Point;
importflash.display.BitmapData;

varperlinBmp:BitmapData;
vardisplacementMap:DisplacementMapFilter;
perlinBmp=newBitmapData(my_mc._width,my_mc._height);
perlinBmp.perlinNoise(my_mc._width,my_mc._height,10,Math.round(Math.random()*100000),false,true,1,false);
displacementMap=newDisplacementMapFilter(perlinBmp,newPoint(0,0),1,1,100,100,"color");
//my_mc.filters=[displacementMap];

my_mc.onRollOver=function():Void{
onEnterFrame=function(){
perlinBmp.perlinNoise(my_mc._width,my_mc._height,10,Math.round(Math.random()*100000),false,true,1,false);
my_mc.filters=[displacementMap];
}
};
my_mc.onRollOut=function(){
deleteonEnterFrame;
my_mc.filters=[];
}

这个播放器非常小,只需花一点点时间下载,对于在体验网页上的多媒体效果是个很好的开始。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-17 14:51:35 | 只看该作者
向量图有一个特点,就是放大后的图像是不会改变的.点阵图向量图Flash的应用,还有再不断在完善的ActionScript脚本语言。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-26 17:12:28 | 只看该作者
关于位图和矢量图形的区别,可参看Flash教程。
老尸 该用户已被删除
地板
发表于 2015-2-4 21:40:48 | 只看该作者
随着动漫发展趋势,我国也越来越重视动漫产业的发展,各种制作动画软件应运而生,其中flash比较突出。
只想知道 该用户已被删除
5#
发表于 2015-2-10 21:29:52 | 只看该作者
中坚的程序员趋向于嘲笑脚本语言,但是对于那些没有计算机科学学位的人来说,脚本语言可能使他们头疼。
海妖 该用户已被删除
6#
发表于 2015-3-1 16:59:33 | 只看该作者
FLASH网站建设的页面非常美观,互动性很强。在企业网站中,FLASH动画作用主要在于突出企业品牌的效应,彰显企业形象的实力。
小女巫 该用户已被删除
7#
发表于 2015-3-10 23:33:36 | 只看该作者
随着动漫发展趋势,我国也越来越重视动漫产业的发展,各种制作动画软件应运而生,其中flash比较突出。
admin 该用户已被删除
8#
发表于 2015-3-17 16:25:48 | 只看该作者
alpha通道,图像的一部分可以变成透明,透明度可以从完全不透明到完全不可见。Alpha通道支持没有副作用。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-24 19:28:41 | 只看该作者
Flash使交互性容易,并且消除了学习某种语言的需要。折中办法是不学语言,同时失去一些功能。但是你仍然可以处理基于用户动作(如鼠标移动或点击)的触发事件,这通常是你需要的所有交互性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-16 00:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表