Flash实现透明度渐变遮罩的方法

时间:2021-05-25 19:33:51

下面介绍两个方法并附上源文件和演示文件。

一、AS法:这个简单,就一个mc.setMask(mask_mc) 就搞定了,但mask_mc必须使用[模糊]滤镜,而mc一定得是位图的元件!
见演示地址:http://www.xzy18.com/blog/attachments/All_Files/alpha_mask.swf
见源文件地址:http://www.xzy18.com/blog/attachments/All_Files/alpha_mask.fla

二、图层混合法:这个要麻烦一点!

关键在于:1、元件属性:影片剪辑 2、混合方式:alpha和图层
制作方法:
1、主场景建立2个图层,背景层在下,遮罩动画层在上,遮罩动画层的元件属性必须为影片剪辑。
2、进入遮罩动画层的元件编辑。同样是两个图层,下层为被遮罩元件,上层是遮罩动画,编辑遮罩动画成透明渐变的动画。然后设置其混合方式为alpha。这里切记不要把该层设置为遮罩。
3、返回主场景,设置遮罩动画层的混合方式为图层。
4、打完收工~

-------------------------------------------------------------

如果还不明白,我附上以下一些文章:

网上有不少讨论Flash实现透明度渐变遮罩的文章,基本上都是使用下面这句话来实现(A与B都是影片剪辑,用B遮罩A)。

A.setMask(B);
事实上,在Flash 8.0的文件中确实应该这样写。然而,在ActionScript 3.0版本的Flash中(比如CS3、CS4),这句话无法通过编译。编译器会警告说setMask在ActionScript3.0中已经停止使用,应该用mc.mask属性代替实现。如果强行运行,将弹出“setMask不是函数”的错误。

在ActionScript 3.0中正确的写法是:

A.mask=B;
与AS 2.0的情况一样,这里也要求A与B都是影片剪辑(Movie Clip)且都在属性中选用了位图缓存(Cache as bitmap)。这条语句的执行效果是A被B遮罩。如果B包含透明度信息(Alpha),那么就可以实现半透明遮罩。更进一步说,如果B包含Alpha渐变,那么就可以实现透明度渐变的遮罩。