【AS3代码】擦窗户效果(也就是流行的妄撮游戏)
package
{
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.net.URLRequest;
public class Main extends Sprite
{
private var _pic:Loader;
private var _pic2:Loader;
private var _bit:Bitmap;
private var abc:Sprite;
private var bo:Boolean = false; //表示当前鼠标不进行绘图
public function Main():void
{
//载入图片
_pic = new Loader();
_pic2 = new Loader();
_pic.load(new URLRequest("pp.jpg"));
//监听加载完毕事件
_pic.contentLoaderInfo.addEventListener(Event.COMPLETE,loadok);
}
private function loadok(evt:Event):void
{
//----上层添加模糊图片的写法---------------------
//定义模糊滤镜
//var lvjing:BlurFilter = new BlurFilter();
//lvjing.blurX = 0;
//lvjing.blurY = 0;
//_pic.filters = [lvjing]; //模糊设置绑定到图片上
//将使用了模糊滤镜的图片添加到舞台
//this.addChild(_pic);
//将保持原有清晰度的图片添加到舞台(该图片在模糊图片的上层)
//_bit = new Bitmap(evt.target.loader.content.bitmapData);
//this.addChild(_bit);
//给清晰图片上加一层遮罩层(遮罩也就是把当前图片遮住,隐藏)
//abc = new Sprite();
//_bit.mask = abc;
//this.addChild(abc);
//----上层添加一张新图的写法----------------------------------------
//将下层的原图添加到舞台
this.addChild(_pic);
//载入另一张图片,并添加到舞台(放置在之前图片的上层)
_pic2 = new Loader();
_pic2.load(new URLRequest("pp2.jpg"));
this.addChild(_pic2);
//创建一个遮罩对象
abc = new Sprite();
//将遮罩应用在最上层的图片上,使之隐藏
_pic2.mask = abc;
this.addChild(abc);
//监听舞台中擦窗户的动作(鼠标事件)按住鼠标拖动时才是擦窗户
//鼠标按下
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, down);
//鼠标移动
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, mmove);
//鼠标抬起
this.stage.addEventListener(MouseEvent.MOUSE_UP, up);
}
//鼠标按下,设为可以绘图
private function down(evt:MouseEvent):void
{
bo = true;
}
//鼠标抬起,设为不可绘图
private function up(evt:MouseEvent):void
{
bo = false;
}
//鼠标移动,开始绘图
private function mmove(evt:MouseEvent):void
{
if(bo == true)
{
var a:Shape = new Shape();
a.graphics.beginFill(0x00ff00);
a.graphics.drawCircle(this.mouseX, this.mouseY, 25); //鼠标在哪,就在哪绘制
a.graphics.endFill();
//将绘制添加到遮罩层
abc.addChild(a);
}
}
}
}