【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);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值