• 擦窗户


    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时,鼠标是抬起的,此时不绘制圆形。

  • 相关阅读:
    Laravel 中使用 Redis 数据库
    PHP 安装 phpredis 扩展(二)
    Redis 安装(一)
    macOS 中使用 phpize 动态添加 PHP 扩展的错误解决方法
    macOS 中的 Rootless 机制
    Homebrew
    macOS 下配置 MAMP 开发环境(Mac + Apache + Mysql + PHP)
    常系数齐次线性递推
    任意模数FFT
    猫树总结
  • 原文地址:https://www.cnblogs.com/leon3286/p/1708883.html
Copyright © 2020-2023  润新知