as3利用bitmapdata实现渐变遮罩
今天在工作中,需要用到对文字进行渐变透明遮罩,就是遮罩层由透明到不透明,用flash估计大家都会,用代码有点小麻烦,平时没用代码画过渐变图,就查了一下相关帮助
首先创建一个渐变的图,由垂直透明到不透明
var myShape:Shape = new Shape();
var gradientBoxMatrix:Matrix = new Matrix();
gradientBoxMatrix.createGradientBox(200, 200, Math.PI*0.5, 0, 0);//Math.PI*0.5是设置渐变转动90度为垂直(默认为水平,也可设任意角度)
var gradientBoxMatrix:Matrix = new Matrix();
gradientBoxMatrix.createGradientBox(200, 200, Math.PI*0.5, 0, 0);//Math.PI*0.5是设置渐变转动90度为垂直(默认为水平,也可设任意角度)
//参数填充类型,颜色数组,alpha数组,渐变比率
myShape.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x00FF00], [0, 1], [0, 128], gradientBoxMatrix);
myShape.graphics.drawRect(0, 0, 200, 200);
myShape.graphics.endFill();
myShape.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x00FF00], [0, 1], [0, 128], gradientBoxMatrix);
myShape.graphics.drawRect(0, 0, 200, 200);
myShape.graphics.endFill();
然后就是把此对象设为遮罩层即可
var spt:Sprite=new Sprite();
spt.beginFill(0xFFCCCC);
spt.graphics.drawRect(0, 0, 200, 200);
spt.graphics.endFill();
//设为遮罩层
spt.mask=myShape;
spt.beginFill(0xFFCCCC);
spt.graphics.drawRect(0, 0, 200, 200);
spt.graphics.endFill();
//设为遮罩层
spt.mask=myShape;
这时还没完成,如果这样是看不到效果的,必须得再设置这两个对象的cacheAsBitmap属性为true,才可以
即
myShape.cacheAsBitmap=true;
spt.cacheAsBitmap=true;
spt.cacheAsBitmap=true;
浙公网安备 33010602011771号