擦窗户
package {
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.display.Bitmap;
import flash.filters.BlurFilter;
import flash.events.Event;
import flash.events.MouseEvent;
public class onWindow extends Sprite {
private var _pic:Loader;
private var bit:Bitmap;
private var abc_mask:Sprite;
private var boolean:Boolean=false;
public function onWindow():void {
init();
}
private function init():void {
_pic=new Loader();
_pic.load(new URLRequest("刘德华_道地茶广告.jpg"));
_pic.contentLoaderInfo.addEventListener(Event.COMPLETE,loadok);
}
private function loadok(evt:Event):void {
//为_pic添加模糊滤镜
var lvjing:BlurFilter=new BlurFilter();
lvjing.blurX=5;
lvjing.blurY=5;
_pic.filters=[lvjing];
addChild(_pic);
bit=new Bitmap(evt.target.content.bitmapData);
addChild(bit);
abc_mask=new Sprite();
bit.mask=abc_mask;
addChild(abc_mask);
stage.addEventListener(MouseEvent.MOUSE_DOWN,down);
stage.addEventListener(MouseEvent.MOUSE_MOVE,mmove);
stage.addEventListener(MouseEvent.MOUSE_UP,up);
}
private function down(evt:MouseEvent):void {
boolean=true;
}
private function up(evt:MouseEvent):void {
boolean=false;
}
private function mmove(evt:MouseEvent):void {
if (boolean) {
var a:Shape=new Shape();
a.graphics.beginFill(0x00ff00);
a.graphics.drawCircle(mouseX,mouseY,20);
a.graphics.endFill();
abc_mask.addChild(a);
}
}
}
}
第23-29行:为_pic添加模糊滤镜,使得_pic图片实现模糊效果。
第31-32行:复制一个和_pic一样的bit图片,此时bit和上面被模糊过滤的_pic是重合的,因为bit后面才添加到舞台,因此只能看见bit,_pic被挡在图层下层,看不见。
第33-35行:定义一个空白的遮罩,挡住清晰的bit,这样模糊的_pic就显示出来了。(注意:如果不复制得到bit,对它使用遮罩,而直接对模糊的_pic使用遮罩,那么此时图片只有2张:_pic和bit_mask,并且bit_mask会挡住_pic,此时显示空白图像。)
第37-53行:到了这里,舞台上显示的就是模糊的_pic。我们的目的是要当鼠标按下并且在舞台上移动的时候,产生擦窗户效果,这时可以设置鼠标移动时绘制圆形对象,并将它添加到遮罩层bit_mask上,这样圆形对象就产生了遮罩效果。因为当鼠标在舞台移动但不按下的时候,不希望产生遮罩,因此定义3个鼠标事件:MOUSE_DOWN、MOUSE_UP、MOUSE_MOVE,并且设定判断绘制圆形的判断条件boolean=true,此时即鼠标按下了;而当boolean=false时,鼠标是抬起的,此时不绘制圆形。
浙公网安备 33010602011771号