在flash中制作动态模糊效果
网络与通信
熟悉Photoshop的朋友肯定经常使用到Motion blur(运动模糊)这个滤镜,利用它可以制作出逼真的动态模糊效果。我们在Flash的制作中也经常需要动态模糊来表现效果,比如一辆高速运行的汽车。遗憾的是Flash中是没有特效滤镜的,那么怎样来实现这样精彩的效果呢?其实只要变换一下思维方式,我们也不难找到解决的方法,而且还不止一种。
一、多个MovieClip重叠法
原理说明:
利用数个有不同透明度的MovieClip相互重叠并少许错位产生模糊的效果。而每一个MovieClip都向中心点做Motion运动,最后完全重合,就达到我们要的动态模糊的效果。
制作步骤:
首先,打开你的Flash,新建文件,Modify\movie在弹出的Properties面板上设置影片的宽为450px,高为250px。背景色为白色。Insert symbol新建一个元件,命名为“小孩”,使用File\import命令导入小女孩的图片,Windows\panels\align在弹出的Align面板上设置居中对齐。再新建元件命名为“动态模糊一”,从Library中拖动“小孩”元件到layer1,设置居中对齐后将其向上移动约5个像素。(你可以使用鼠标拖动它,也可以利用键盘的上下键来进行移动)。((图1))Windows\panels\effect打开effect面板,设置Alpha属性为28%,((图2))即此MovieClip的透明度为28%。新建一层Layer2,从Library中拖动“小孩”元件到layer2,设置居中对齐后将其向左上移动约5个像素,在Effect面板上设置Alpha属性为35%。新建一层layer3,从Library中拖动“小孩”元件到Layer3,设置居中对齐后将其向左移动约5个像素,在Effect面板上设置Alpha属性为40%。新建一层Layer4,从Library中拖动“小孩”元件到Layer4,设置居中对齐后将其向左下移动约5个像素,在Effect面板上设置Alpha属性为45%。在Layer 1的第5帧建立关键帧,并将在第5帧上的“小孩”元件居中对齐。鼠标右键单击从第1帧到第5帧之间的任意一帧,在弹出的菜单中选择:Create motion tween,建立Motion动画。使用同样的方法,在其他3层的第5帧建立关键帧并设置了居中对齐后,建立Motion动画((图3))。



回到Scene 1,从Library中拖动“动态模糊一”元件到Layer1,用“Ctrl+Enter”测试一下影片,怎么样,是不是正是你想要的效果?
二、ActionScript复制MovieClip法
原理说明:
利用ActionScript复制MovieClip,并且赋予每一个MovieClip不同的位置与透明度,再使每一个复制出来的MovieClip都向同一方向做减速运动,最终静止。从而达到运动的效果。
制作步骤:
建元件命名为“小孩动画”,从Library中拖动“小孩”元件到Layer 1,在第3帧新建关键帧,Windows\panels\effect,在弹出的Effect面板上设置透明度为0%。鼠标右键单击从第1帧到第3帧的任意一帧,Create motion tween,建立Motion动画。双击第3帧,在Frame action面板上输入stop();。回到Scene 1,将“小孩动画”拖动到layer1,新建一层layer2,双击第一帧,在Frame actions面板输入((图4)):

x = 200;
i = 0;
z = 48;
y = 0;
//以上代码的含义是:赋予变量初始值。其中I代表复制MovieClip的个数,z代表初始的x坐标,z代表每次向左运动的距离。y代表初始的透明度。
在Layer 2的第2帧建立关键帧,双击第2帧,在Frame actions面板输入((图5)):

if (i>10) {
stop();
}
duplicateMovieClip ("aa", "aa" add i, i);
setProperty ("aa" add i, _x, number(x));
setProperty ("aa" add i, _alpha, number(y)+random(5)));
//以上代码的含义是:首先利用变量I来控制复制多少个MovieClip,当I>10时就将停止MovieClip的复制。在判断完是否结束复制之后,复制MovieClip,设置MovieClip的x坐标值与透明度。
在Layer 2的第3帧先建关键帧,双击第3帧,在Frame Actions面板输入((图6)):

i = number(i)+1;
z = number(z)-8;
x = number(x)+number(z);
y = number(y)+5;
gotoAndPlay (1);
//以上代码中需要注意的是:x = number(x)+number(z);我们知道x将作为x坐标值 赋予复制出的MovieClip,而将x值加上z的值表示每一个复制出的MovieClip的x坐标都将改变数值z的大小。而在z = number(z)-8;中我们可以知道,每一次z值都将减少8,其实也就是MovieClip的x坐标的改变值每一次都要少8,就实现了我们需要的减速运动的效果。
在Layer 1的第2帧按下F5插入一帧(insert frame),完成了动画制作。
本例效果:http://www.5dmedia.com/users/pcking/blur.swf
本例源文件:http://www.5dmedia.com/users/pcking/blur.fla