AS3中实现渐变遮罩的方法

时间:2021-12-14 19:33:39

舞台上有两个影片剪辑实例:pic_mc和mask_mc

其中pic_mc中是一张位图,

mask_mc中是一个绘制的矢量矩形,从左至右使用渐变色添充,在颜色面板中设置左边色标alpha值为0,右边色标alpha值为100.

为舞台中的两个实例取实例名:pic_mc和mask_mc.

新建AS层,加入如下语句,即可实现渐变遮罩的效果:

pic_mc.mask=mask_mc;
//下面使用cacheAsBitmap,是为了让遮罩也能随透明度有渐变过渡效果
pic_mc.cacheAsBitmap=true;
mask_mc.cacheAsBitmap=true;

//如果设置为 true,则 Flash Player 将缓存显示对象的内部位图表示形式。
//使用该属性往往比默认使用矢量能够更快地呈现。

 

模糊滤镜遮罩:

import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.net.URLRequest;
import flash.filters.BitmapFilterQuality;
import flash.ui.Mouse;
 
var _bitmap:Bitmap;
var _circleMask:Sprite;
 
//初始化遮罩圆
initMask();
 
//设置被遮罩的背景图
setBg();
 
function initMask():void
{
    _circleMask = new Sprite();
    _circleMask.graphics.beginFill(0xff0000);
    _circleMask.graphics.drawCircle(60,60,60);
    _circleMask.graphics.endFill();
 
    //用滤镜模糊化
    _circleMask.filters = [new BlurFilter(20, 20, BitmapFilterQuality.HIGH)];
    _circleMask.cacheAsBitmap = true;
 
    this.addChild(_circleMask);  
 
    //遮罩圆可拖拽
    _circleMask.startDrag(true);
    Mouse.hide();
}
 
function setBg():void
{            
    //舞台上面的一个MovieClip
    bg.mask = _circleMask;        
}