中国教程网论坛's Archiver

sanbos 发表于 2008-11-23 22:23

AS入门教程第7课影片剪辑-第9节使用滤镜[本文已收录教程库]

使用滤镜
   Flash的filters类为我们提供了9种滤镜效果,要用AS实现滤镜效果,首先仍然需导入filters类:
     import flash.filters.*;
然后,使用new构造函数,创建一个filters对象,并将它赋值给MC(或文本或按钮)的filters属性从而实现滤镜效果。
下面分别介绍这些滤镜效果:
1.        模糊滤镜:BlurFilter
       BlurFilter类可以带来模糊的效果。要创建BlurFilter实例可用下面的方法:
     var  filter: BlurFilter = new BlurFilter(blurX, blurY, quality);
在BlurFilter的构造函数中使用了三个参数:
blurX: 水平模糊量。有效值为 0 到 255(浮点值)。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
blurY: ― 垂直模糊量。有效值为 0 到 255(浮点值)。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
quality: ― 应用滤镜的次数。默认值是 1,即表示低品质。值为 2 表示中等品质,值为 3 表示高品质并且接近高斯模糊。
下面还是用一个练习来熟悉模糊滤镜的应用。
导入一张图片将它做成MC,放到舞台上,实例名称为:my_mc.
然后打开帧动作面板,输入下列代码:[code]import flash.filters.*
var filter:BlurFilter = new BlurFilter(8,8,3);
my_mc.filters = [filter];[/code]测试影片,这时图片已变模糊了。效果如下:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_c9c19dc6966803bee1ddNru63c5c14cT.swf[/swf]
我们甚至可以在运行时改变模糊滤镜的参数,使模糊效果是可变的,比如根据鼠标的位置产生不同的模糊效果。将代码改成下面的:[code]import flash.filters.*
var filter:BlurFilter = new BlurFilter(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];
}[/code]测试影片,当鼠标移动时,模糊效果发生变化,鼠标距图片中心越远,模糊效果越深。效果如下:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_fae3016b9ea55f3ea3faswv0wAkYVWEY.swf[/swf]

[[i] 本帖最后由 sanbos 于 2009-1-17 14:46 编辑 [/i]]

sanbos 发表于 2008-11-23 22:27

2.        投影滤镜:DropShadowFilter
DropShadowFilter滤镜将产生投影的效果。要创建投影滤镜可用:
var filter: DropShadowFilter = new DropShadowFilter(distance, angleInDegrees,color,alpha,blurX,blurY,strength,quality,inner,knockout,hideObject);
投影影滤镜的参数比较多哈,还是一个一个介绍一下:
distance:― 阴影的偏移距离,以像素为单位。默认值是 4(浮点)。
angle:― 阴影的角度,0 到 360˚(浮点)。默认值是 45。
color:― 阴影颜色,采用十六进制格式 0xRRGGBB。默认值是 0x000000。
alpha:― 阴影颜色的 Alpha 透明度值。有效值为 0 到 1。例如,0.25 设置透明度值为 25%。默认值是 1。
blurX: ― 水平模糊量。有效值为 0 到 255(浮点)。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
blurY:― 垂直模糊量。有效值为 0 到 255(浮点)。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
strength:― 压印或跨页的强度。该值越高,压印的颜色越深,而且阴影与背景之间的对比度也越强。有效值为 0 到 255。默认值是 1。
quality:― 应用滤镜的次数。有效值为 0 到 15。默认值是 1,它表示低品质。值为 2 表示中等品质,值为 3 表示高品质。
inner:― 表示阴影是否为内侧阴影。值 true 指定内侧阴影。默认为 false,即外侧阴影,它表示对象外缘周围的阴影。
knockout:― 应用挖空效果 (true),这将有效地使对象的填色变为透明,并显示文档的背景颜色。默认值是 false,即不应用挖空效果。
hideObject:― 表示是否隐藏对象。如果值为 true,则表示没有绘制对象本身,只有阴影是可见的。默认值是 false(显示对象)。
做个练习:将上面练习的代码改为:[code]import flash.filters.*
var filter:DropShadowFilter = new DropShadowFilter();
my_mc.filters = [filter];[/code]测试影片,效果如下:图片产生了投影效果。因为投影滤镜的所有参数都是可选的,所以我们没有给任何参数,即都使用默认值。
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_6e3874907d10c4ab4b8dKzcP3uyeGQ3p.swf[/swf]
同样的我们可以在运时改变投影的参数,从而改变效果。我们将这个效果改变加在图片的点击事件上,即点击图片投影效果发生改变。这里改变了三个参数,偏移量,颜色(随机)和角度。
效果:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_40d8ec61b00c5416f57c1yF5yRwAOaEY.swf[/swf]
代码如下:[code]import flash.filters.*
var filter:DropShadowFilter = new DropShadowFilter();
my_mc.filters = [filter];
var i = 1;
my_mc.onRelease = function():Void {
        if(filter.distance<5){
                i=1;
        } else if (filter.distance>30){
                i=-1;
        }
        filter.distance += i;
        filter.color = random(16000000);
        filter.angle++;
    my_mc.filters = [filter];
}[/code]

[[i] 本帖最后由 sanbos 于 2008-11-23 22:30 编辑 [/i]]

sanbos 发表于 2008-11-23 22:33

3.        发光滤镜:GlowFilter
构造函数:
var filter:GlowFilter = new GlowFilter(color,alpha,blurX,blurY,strength,quality,inner,knockout);
参数:
color: ― 光晕颜色,采用十六进制格式 0x RRGGBB。默认值是 0xFF0000。
alpha: ― 颜色的 Alpha 透明度值。有效值为 0 到 1。例如,.25 设置透明度值为 25%。默认值是 1。
blurX:― 水平模糊量。有效值为 0 到 255(浮点)。默认值是 6。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,它的呈现速度会比其它值更快。
blurY:― 垂直模糊量。有效值为 0 到 255(浮点)。默认值是 6。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,它的呈现速度会比其它值更快。
strength:― 压印或跨页的强度。该值越高,压印的颜色越深,而且发光与背景之间的对比度也越强。有效值为 0 到 255。默认值是 2。
quality:― 应用滤镜的次数。有效值为 0 到 15。默认值是 1,它表示低品质。值为 2 表示中等品质,值为 3 表示高品质。
inner:― 指定发光是否为内侧发光。值 true 表示内侧发光。默认值是 false,即外侧发光,它表示对象外缘周围的发光。
knockout:― 指定对象是否具有挖空效果。值为 true 将使对象的填充变为透明,并显示文档的背景颜色。默认值是 false(不应用挖空效果)。
效果:点击图片效果发生变化。
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_e4d829b9cb1ff9447f95TFtU0VspGIfg.swf[/swf][code]import flash.filters.*
var filter:GlowFilter = new GlowFilter();
my_mc.filters = [filter];
var i = 1;
var j =0.1;
my_mc.onRelease = function():Void {
        if(filter.blurX<5){
                i=1;
        } else if (filter.blurX>250){
                i=-1;
        }
        if(filter.alpha < 0.3){
                j =0.1;
        } else if(filter.alpha >0.8){
                j=-0.1;
        }
        filter.blurX += i;
        filter.blurY += i;
        filter.color = random(16000000);
        filter.alpha += j;
        my_mc.filters = [filter];
}[/code]

[[i] 本帖最后由 sanbos 于 2009-4-15 20:23 编辑 [/i]]

sanbos 发表于 2008-11-23 22:36

4.        渐变发光滤镜:GradientGlowFilter
构造函数:
var filter:GradientGlowFilter = new GradientGlowFilter(distance,angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout);

参数:
distance:― 光晕的偏移距离。默认值为 4。
angle:― 角度,以度为单位。有效值为 0 到 360。默认值是 45。
colors: ― 定义渐变的颜色的数组。例如,红色为 0xFF0000,蓝色为 0x0000FF,依此类推。
alphas: ― colors 数组中对应颜色的 Alpha 透明度值的数组。数组中每个元素的有效值为 0 到 1。例如,值为 .25 设置 Alpha 透明度值为 25%。
ratios: ― 颜色分布比例的数组。有效值为 0 到 255。该值定义宽度的百分比,颜色采样率为 100%。
blurX: ― 水平模糊量。有效值为 0 到 255。如果模糊量小于等于 1,则表明原始图像是按原样复制的。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
blurY:― 垂直模糊量。有效值为 0 到 255。如果模糊量小于等于 1,则表明原始图像是按原样复制的。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
strength: ― 压印或跨页的强度。该值越高,压印的颜色越深,而且发光与背景之间的对比度也越强。有效值为 0 到 255。值越大,压印越强。值为 0 意味着未应用滤镜。默认值是 1。
quality: ― 应用滤镜的次数。有效值为 0 到 15。默认值是 1,它表示低品质。值为 2 表示中等品质,值为 3 表示高品质。
type: ― 滤镜效果的放置。可能的值包括:
"outer":对象外缘上的发光
"inner":对象内缘上的发光;默认值
"full":对象顶部的发光
效果:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_2f3b573dc2ca4d5718657mi6BbnQmgDZ.swf[/swf]
代码:[code]import flash.filters.*
var filter:GradientGlowFilter = new GradientGlowFilter();
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];[/code]

[[i] 本帖最后由 sanbos 于 2008-11-23 22:40 编辑 [/i]]

sanbos 发表于 2008-11-23 22:42

5.        斜角滤镜:BevelFilter
斜角滤镜可产生三维效果。
构造函数:
var filter:BevelFilter = new BevelFilter(distance, angleInDegrees, highlightColor, highlightAlpha, shadowColor, shadowAlpha, blurX, blurY, strength, quality, type, knockout);
参数:
distance:― 斜角的偏移距离,以像素为单位(浮点)。默认值是 4。
angle:― 斜角的角度,0 至 360 度。默认值是 45。
highlightColor:― 斜角的加亮颜色 0xRRGGBB 。默认值是 0xFFFFFF。
highlightAlpha:- 加亮颜色的 Alpha 透明度值。有效值为 0 到 1。例如,.25 设置透明度值为 25%。默认值是 1。
shadowColor:- 斜角的阴影颜色 0xRRGGBB 。默认值是 0x000000。
shadowAlpha: ― 阴影颜色的 Alpha 透明度值。有效值为 0 到 1。例如,0.25 设置透明度值为 25%。默认值是 1。
blurX: ― 水平模糊量,以像素为单位。有效值为 0 到 255(浮点)。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
blurY: ― 垂直模糊量,以像素为单位。有效值为 0 到 255(浮点)。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
strength: ― 压印或跨页的强度。该值越大,压印的颜色越深,而且斜角与背景之间的对比度也越强。有效值为 0 到 255。默认值是 1。
quality: ― 应用滤镜的次数。默认值是 1,即表示低品质。值为 2 表示中等品质,值为 3 表示高品质。
type:― 斜角的类型。有效值为 "inner"、"outer" 和 "full"。默认值为 "inner"。
knockout: ― 应用挖空效果 (true),这将有效地使对象的填色变为透明,并显示文档的背景颜色。默认值是 false(不应用挖空效果)。
效果:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_17ddf9f61e66606002f3FMF4i9laXMU9.swf[/swf]
代码:[code]import flash.filters.*
var filter: BevelFilter  = new  BevelFilter ();
filter.distance = 8;
filter.highlightColor = 0xcccccc;
my_mc.filters = [filter];[/code]你可以调整其它参数,创建不同的效果。
v

[[i] 本帖最后由 sanbos 于 2008-11-23 22:44 编辑 [/i]]

sanbos 发表于 2008-11-23 22:46

6.        渐变斜角滤镜:GradientBevelFilter
构造函数:
var filter:GradientBevelFilter = new GradientBevelFilter(distance, angleInDegrees, colors, alphas, ratios, blurY, quality, type, knockout);
参数:
distance: ― 偏移距离。有效值为 0 到 8。默认值为 4。
angle: ― 角度,以度为单位。有效值为 0 到 360。默认值是 45。
colors: ― 渐变中使用的 RGB 十六进制颜色值的数组。例如,红色为 0xFF0000,蓝色为 0x0000FF,依此类推。
alphas: ― colors 数组中对应颜色的 Alpha 透明度值的数组。数组中每个元素的有效值为 0 到 1。例如,.25 设置透明度值为 25%。
ratios: ― 颜色分布比例的数组;有效值为 0 到 255。
blurX: ― 水平模糊量。有效值为 0 到 255。如果模糊量小于等于 1,则表明原始图像是按原样复制的。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
blurY: ― 垂直模糊量。有效值为 0 到 255。如果模糊量小于等于 1,则表明原始图像是按原样复制的。默认值是 4。作为 2 的乘方的值(如 2、4、8、16 和 32)经过了优化,呈现速度比其它值更快。
strength:― 压印或跨页的强度。该值越高,压印的颜色越深,而且斜角与背景之间的对比度也越强。有效值为 0 到 255。值为 0 表明没有应用滤镜。默认值是 1。
quality: ― 滤镜的质量。有效值为 0 到 15。默认值是 1。几乎在所有情况下,有用值都是 1(低品质)、2(中等品质)和 3(高品质)。滤镜的值越小,呈现速度越快。
type: ― 斜角效果的放置。可能的值包括:
•        "outer":对象外缘上的斜角
•        "inner":对象内缘上的斜角
•        "full":对象顶部的斜角
默认值为 "inner"。
knockout:― 指定是否应用挖空效果。值为 true 将使对象的填充变为透明,并显示文档的背
效果:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_a4749d7137f7900b7b20VLIojwPnsTUn.swf[/swf]
代码:[code] var filter:GradientBevelFilter = new GradientBevelFilter();
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];[/code]

[[i] 本帖最后由 sanbos 于 2008-11-23 22:48 编辑 [/i]]

sanbos 发表于 2008-11-23 22:50

7.        矩阵颜色滤镜:ColorMatrixFilter
      使用这个滤镜可以将一个4x5的矩阵应到MC(或位图)上,从面改变MC的色相,透明度及亮度等。我想这个滤镜的难点应该是对这个矩阵的理解上。RGB颜色由红绿蓝三种色组成,矩阵将各像素颜色拆分成红绿蓝三种色另加一个透明度。共四个通道。每个通道由5组值组成这就形成了一个4x5的矩阵。看看下图,来理解一下:
               红   绿   蓝   透明度     结果
      红色      1   0    0     0          0
      绿色      0   1    0     0          0
      蓝色      0   0    1     0          0
      透明度    0   0    0     N          0(N为0.1-1)
从上面的矩阵中可看出,每个通道在其相应的位置设置了值,最小是0,最大为1,改变这些值就可改变图象的色相及透明度。结果的数值改变可改变图象的亮度。比如将矩阵中红色通道的值由1改为0.5,那么图象中的红色元素将会降低。
     在实际应用中,将这个矩阵赋值给一个数组,再将这个数组作为ColorMatrixFilter类构造函数的参数,最后将MC的filters属性设为ColorMatrixFilter类的实例。这同使用其它滤镜一样。
先来做一个增加图片亮度的练习:
效果:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_f66283628a0e332d0bdfXaaHxR2IyibF.swf[/swf]
    将代码改为:[code]import flash.filters.*;
var matrix:Array = new Array();
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
var filter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
my_mc.filters = [filter];[/code]测试影片,可以片到图片亮度被增大了很多。这是将矩阵中红绿蓝通道的结果值都改为了100得到的结果。
下面一个练习是动态改变红绿蓝三种色的值,从而改变色相。通过鼠标在屏幕上的位置来确定各颜色的值,当鼠标移动时动态改变。
效果:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_3225689701b5e5f9fb34tXu2PoiUIh2x.swf[/swf]
代码:[code]import flash.filters.*;
onMouseMove = function() {
var xPercent:Number = 1 - (_xmouse/Stage.width);
var yPercent:Number = 1 - (_ymouse/Stage.height);
var matrix:Array = new Array();
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
var filter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
my_mc.filters = [filter];
}[/code]

[[i] 本帖最后由 sanbos 于 2008-11-23 22:57 编辑 [/i]]

sanbos 发表于 2008-11-23 22:59

8.        卷积滤镜:ConvolutionFilter
       卷积滤镜同样用一个矩阵于图象可形成如模糊、边缘检测、锐化、浮雕和斜角等多种效果。卷积滤镜重新计算每个像素,并根据矩阵将像素及其周围的象素要加得也该像素的新颜色。最常用的矩阵是3x3的矩阵,如下图:
           N    N      N
           N    P      N
           N    N      N
在这个矩阵中P代表本身的像素,而N代表周围的像素。那么下面这个矩阵:
         0    0    0
         0    1    0
         0    0    0
可以看出将这个矩阵用于图象时,图象没有变化,因为除自已外周围的像素均为0,即周围像素对中间的P像素没有影响。
将矩阵存入一个数组,并将它作为ConvolutionFilter类构造函数的一个参数,可实现卷积滤镜效果,除了矩阵参数处ConvolutionFilter构造函数还有其它的一些参数:
matrixX ― 矩阵的 x 维度(矩阵中列的数目)。默认值是 0。
matrixY:― 矩阵的 y 维度(矩阵中行的数目)。默认值是 0。
matrix:― 用于矩阵转换的值的数组;返回一个副本。数组中的项数必须等于 matrixX*matrixY。
divisor: ― 矩阵转换中使用的除数。默认值是 1。这个参数如果与矩阵值的总和相等,那么图象的亮度无变化。比如这个矩阵:
      0 1 0
     1 1 1
     0 1 0
里面有5个1,那么矩阵总值为5,如果divisor参设为5,则图象的亮度无变化。如果本参数为1,那么图象的亮度是原图象的5/1倍,这时图象就很亮了。如果本参数为10,那么原图片的亮度为5/10,显然图片就变暗了。
bias:― 要添加到矩阵转换结果的偏差。默认值是 0。
preserveAlpha:― 值为 false 表明卷积应用于所有通道,包括 Alpha 通道。值为 true 表示只对颜色通道应用卷积。默认值为 true。
clamp:― 对于源图像之外的像素,如果值为 true,则表明通过复制输入图像给定边缘处的颜色值,沿着输入图像的每个边框按需要扩展输入图像。如果值为 false,则表明应按照 color 和 alpha 属性中的指定使用其它颜色。默认值是 true。
color:― 要替换源图像之外的像素的十六进制颜色。
alpha:― 替换颜色的 Alpha。
下面是几个基本效果的矩阵:
基本模糊(除数 5):
     0 1 0
     1 1 1
     0 1 0
锐化(除数 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

练习:将上面几个矩阵效果应用于图片,点击图片一次,变换一种效果。
效果:
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_22bd6b16d7d60b86f79eF9DB87oDK8nx.swf[/swf]
代码:[code]import flash.filters.*;
var i =0;
my_mc.onRelease = function(){
        i++;
        if(i>4){
                i=1;
        }
       
        switch(i){
                case 1:
var matrixArr:Array =[0,1,0,1,1,1,0,1,0];
var convolution:ConvolutionFilter = new ConvolutionFilter(3, 3, matrixArr,5);
    my_mc.filters = [convolution];
   break;
   case 2:
   var matrixArr:Array = [0, -1, 0,-1, 5, -1, 0, -1, 0];
var convolution:ConvolutionFilter = new ConvolutionFilter(3, 3, matrixArr,1);
   my_mc.filters = [convolution];
   break;
   case 3:
   var matrixArr:Array = [0, -1, 0,-1, 4, -1, 0, -1, 0];
var convolution:ConvolutionFilter = new ConvolutionFilter(3, 3, matrixArr,1);
   my_mc.filters = [convolution];
   break;
   case 4:
   var matrixArr:Array = [-2, -1, 0,-1, 1, 1,0, 1, 2];
var convolution:ConvolutionFilter = new ConvolutionFilter(3, 3, matrixArr,1);
   my_mc.filters = [convolution];
   break;
   
        }
}[/code]

[[i] 本帖最后由 sanbos 于 2008-11-23 23:01 编辑 [/i]]

sanbos 发表于 2008-11-23 23:02

图片置换滤镜:
mapBitmap:― 包含置换映射数据的 BitmapData 对象。
mapPoint: ― 一个 flash.geom.Point 值,它包含目标影片剪辑的左上角与映射图像左上角之间的偏移量。
componentX: ― 说明在映射图像中使用哪个颜色通道来置换 x 结果。 可能的值如下所示:
•        1(红色)
•        2(绿色)
•        4 (蓝色)
•        8 (alpha)
componentY: ― 说明在映射图像中使用哪个颜色通道来置换 y 结果。可能的值如下所示:
•        1 (红色)
•        2(绿色)
•        4(蓝色)
•        8 (alpha)
scaleX: ― 用于缩放映射计算的 x 置换结果的乘数。
scaleY: ― 用于缩放映射计算的 y 置换结果的乘数。
mode: [可选] ― 滤镜的模式。可能的值如下所示:
•        "wrap" -- 将置换值折返到源图像的另一侧。
•        "clamp" -- 将置换值锁定在源图像的边缘。
•        "ignore" -- 如果置换值超出了范围,则忽略置换并使用源像素。
•        "color" -- 如果置换值在图像外,则替换由滤镜的 alpha 属性和 color 属性组成的像素值。
color: [可选] ― 指定对于超出范围的替代应用什么颜色。置换的有效范围是 0.0 到 1.0。如果 mode 设置为 "color",则使用此参数。
alpha: [可选] ― 指定对于超出范围的替换应用什么 Alpha 值。它被指定为 0.0 到 1.0 之间的标准值。例如,0.25 设置透明度值为 25%。默认值是 0。如果 mode 设置为 "color",则使用此参数。
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081123_c4f355fc85e93bc7736dhm9VsNP1uVR0.swf[/swf]
代码:[code]import flash.filters.DisplacementMapFilter;
import flash.geom.Point;
import flash.display.BitmapData;

var perlinBmp:BitmapData;
var displacementMap:DisplacementMapFilter;
     perlinBmp = new BitmapData(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 = new DisplacementMapFilter(perlinBmp, new Point(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(){
        delete onEnterFrame;
        my_mc.filters = [];
}[/code]

[[i] 本帖最后由 sanbos 于 2008-11-23 23:04 编辑 [/i]]

sunshijiu 发表于 2008-11-24 13:59

交个作业 鼠标放上来 有效果 ps里有一个置换滤镜,没想到Flash中也有!
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081124_b4d53fa47571e16d6794wm57BomyYvVV.swf[/swf]

[[i] 本帖最后由 sunshijiu 于 2008-11-24 14:03 编辑 [/i]]

sunshijiu 发表于 2008-11-24 14:20

矩阵颜色滤镜 这个好玩
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081124_6904e8d2f8af47166c364lXgw5r6fXJ6.swf[/swf]

十兄 发表于 2008-11-25 11:23

作业
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081125_4d0b807474cdb8b0b24bSh8E1I1ckRnU.swf[/swf]
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081125_e95a7b165abb63107f49XDCCuVYX7EsC.swf[/swf]
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081125_1462f7f7d99fa8865aadNtDQj1RW1d2T.swf[/swf]
[swf]http://bbs.jcwcn.com/attachments/month_0811/20081125_60c41514ed526579cc97FIyJI3U8f4av.swf[/swf]

[[i] 本帖最后由 sanbos 于 2008-11-25 11:48 编辑 [/i]]

zjpldh 发表于 2009-4-15 11:47

请教(如下注释)

import flash.filters.*
var filter:BlurFilter = new BlurFilter(8,8,3);
my_mc.filters = [filter];
onMouseMove = function() {
bx = Math.abs(_xmouse - my_mc._x); //为何这里的my_mc._x是my_mc元件的注册点值,而不是my_mc在舞台的起点值呢?因为到中心最清晰,既bx=0;
by = Math.abs(_ymouse - my_mc._y);
filter.blurX = bx/10;
filter.blurY = by/10;
my_mc.filters = [filter];
}

zjpldh 发表于 2009-4-15 12:14

请教(如下注释)

import flash.filters.*
var filter:GlowFilter = new GlowFilter();
my_mc.filters = [filter];
var i = 1;
var j =0.1;
my_mc.onRelease = function():Void {
if(filter.blurX<5){
i=1;
} else if (filter.blurX>250){
i=-1;
}                          //if(filter.blurX<5){ i=1; } else if (filter.blurX>250){ i=-1; } 老师这句能否帮我解释下呀,还有下面那句,不是说alpah值为0-1么,怎么来了个3和8,搞晕了
if(filter.alpha < 3){
j =0.1;
} else if(filter.alpha >8){
j=-0.1;
}
filter.blurX += i;
filter.blurY += i;
filter.color = random(16000000);
filter.alpha += j;
my_mc.filters = [filter];
}

sanbos 发表于 2009-4-15 20:22

1._x属性是指的就是对象的注册点的位置。你问为什么我还真不好回答。
2.14楼的问题是我输错了,多谢,我改过来了,就该是0.3和0,8

fyngli 发表于 2009-6-6 20:32

[i=s] 本帖最后由 zctmh0336 于 2009-6-25 19:20 编辑 [/i]

练习。
[swf]http://bbs.jcwcn.com/attachments/month_0906/090606203207dc5728f32254ff.swf[/swf]

竹林深处 发表于 2009-6-25 18:50

[i=s] 本帖最后由 zctmh0336 于 2009-6-25 19:22 编辑 [/i]

这个真是高深啊 有些吸收不了了呵呵 先把作业交了吧!
模糊滤镜
[swf]http://bbs.jcwcn.com/attachments/month_0906/090625185098bc54da75927a67.swf[/swf]
矩阵颜色滤镜
[swf]http://bbs.jcwcn.com/attachments/month_0906/0906251850f98d784d02b0aa95.swf[/swf]

竹林深处 发表于 2009-6-25 18:51

[i=s] 本帖最后由 zctmh0336 于 2009-6-25 19:23 编辑 [/i]

接着交
[swf]http://bbs.jcwcn.com/attachments/month_0906/090625185103fd1046b94cdad6.swf[/swf]

水蓝de心 发表于 2009-7-11 16:08

[b] [url=http://bbs.jcwcn.com/redirect.php?goto=findpost&pid=5285332&ptid=217622]15#[/url] [i]sanbos[/i] [/b]

我想问下,是直接把代码弄到动作那么?还是。。先要怎么样的啊!
不好意思我刚接触Flash还有很多不懂的!

sanbos 发表于 2009-7-11 16:18

[b] [url=http://bbs.jcwcn.com/redirect.php?goto=findpost&pid=5652058&ptid=217622]19#[/url] [i]水蓝de心[/i] [/b]


打开动作面板,在那里写代码。

muxing001 发表于 2009-7-19 22:54

[i=s] 本帖最后由 zctmh0336 于 2009-7-19 23:54 编辑 [/i]

总想做得更好,又改了师傅的效果,接受批评!
[swf]http://bbs.jcwcn.com/attachments/month_0907/09071922540f75dac1cf9713ea.swf[/swf]

qq455025934 发表于 2009-10-31 09:43

请教:1120: 访问的属性 onMouseMove 未定义。

sanbos 发表于 2009-10-31 22:03

[b] [url=http://bbs.jcwcn.com/redirect.php?goto=findpost&pid=6117247&ptid=217622]22#[/url] [i]qq455025934[/i] [/b]


你大概用的是AS3吧。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.