zoukankan      html  css  js  c++  java
  • 擦窗户

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

  • 相关阅读:
    SpringMVC源码分析--HandlerMappings
    你真的懂wait、notify和notifyAll吗
    深入理解DefaultMessageListenerContainer
    起步
    ZOJ 3827 Information Entropy (2014牡丹江区域赛)
    Spring简化配置
    对于一个IE8兼容性问题的反思
    xcode7.1.1不能真机调试ios9.2系统设备的解决方法
    CSS3怎样实现超出指定文本以省略号显示效果
    网易2016年研发project师编程题(2)
  • 原文地址:https://www.cnblogs.com/leon3286/p/1708883.html
Copyright © 2011-2022 走看看