智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...
随笔 - 991, 文章 - 0, 评论 - 27, 阅读 - 341万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

AS3中实现渐变遮罩的方法

Posted on   Bill Yuan  阅读(4051)  评论(0编辑  收藏  举报

舞台上有两个影片剪辑实例: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;        
}
复制代码

 

(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示