zoukankan      html  css  js  c++  java
  • 倒影类Reflection及其用法举例

    package {
    	import flash.display.Sprite;
    	import flash.display.Loader;
    	import flash.net.URLRequest;
    	import flash.events.Event;
    
    	import com.Reflection;
    
    	public class PhotoFrame extends Sprite {
    		private var url:String;
    		public var _name:String;
    		private var link:String;
    
    		private var loader:Loader;
    
    		private var bg_reflection:Reflection;
    
    		public function PhotoFrame(url_:String,name_:String,link_:String):void {
    			url=url_;
    			_name=name_;
    			link=link_;
    
    			init();
    		}
    		private function init():void {
    			tf_label.text=_name;
    
    			loader=new Loader();
    			loader.load(new URLRequest(url));
    			loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded,false,0,true);
    		}
    
    		private function loaded(evt:Event):void {
    			this.bg.addChild(loader);
    			loader.x=5;
    			loader.y=5;
    
    			bg_reflection=new Reflection(bg,bg.height*0.6,1,1,1,0,1);
    			addChild(bg_reflection);
    			bg_reflection.y+=8;
    			//注意:因为图片是添加到bg容器里,所以只需要对bg添加倒影效果即可,不需再为loader添加倒影
    		}
    	}
    }
    
    package com{
    
    	/*
    	
    	Written by:
    	Dustin Andrew
    	dustin@flash-dev.com
    	www.flash-dev.com
    	
    	LAST UPDATED:
    	01/24/06
    	
    	Reflection.as
    	
    	Create a bitmap reflection of a displayobject
    	
    	*/
    
    	import flash.display.*;
    	import flash.geom.*;
    	import flash.events.*;
    
    	public class Reflection extends Sprite {
    
    		private var _disTarget:DisplayObject;
    		private var _height:Number;
    		private var _numStartFade:Number=.3;
    		private var _numMidLoc:Number=.5;
    		private var _numEndFade:Number=0;
    		private var _numSkewX:Number=0;
    		private var _numScale:Number=1;
    		private var _bmpReflect:Bitmap;
    
    		// Constructor
    		public function Reflection(set_disTarget:DisplayObject, height_:Number, set_numStartFade:Number, set_numMidLoc:Number, set_numEndFade:Number, set_numSkewX:Number, set_numScale:Number) {
    			super();
    			_disTarget=set_disTarget;
    			_height=height_;
    			_numStartFade=set_numStartFade;
    			_numMidLoc=set_numMidLoc;
    			_numEndFade=set_numEndFade;
    			_numSkewX=set_numSkewX;
    			_numScale=set_numScale;
    
    			_bmpReflect=new Bitmap(new BitmapData(1,1,true,0));
    			this.addChild(_bmpReflect);
    			createReflection();
    		}
    
    		// Create reflection
    		private function createReflection(event:Event = null):void {
    
    			// Reflection
    			var bmpDraw:BitmapData=new BitmapData(_disTarget.width,_height,true,0);
    			var matSkew:Matrix=new Matrix(1,0,_numSkewX,-1*_numScale,0,_height);//此处必须要用_height
    			var recDraw:Rectangle = new Rectangle(0, 0, _disTarget.width, _height * (2 - _numScale));
    			var potSkew:Point=matSkew.transformPoint(new Point(0,_disTarget.height));//此处不能替换成_height
    			matSkew.tx=potSkew.x*-1;
    			matSkew.ty = (potSkew.y - _height) * -1;//此处必须要用_height
    			bmpDraw.draw(_disTarget, matSkew, null, null, recDraw, true);
    
    			// Fade
    			var shpDraw:Shape = new Shape();
    			var matGrad:Matrix = new Matrix();
    			var arrAlpha:Array = new Array(_numStartFade, (_numStartFade - _numEndFade) / 2, _numEndFade);
    			var arrMatrix:Array=new Array(0,0xFF*_numMidLoc,0xFF);
    			matGrad.createGradientBox(_disTarget.width, _height, 0.5 * Math.PI);
    			//这里设置投影高度=_height;
    			shpDraw.graphics.beginGradientFill(GradientType.LINEAR, new Array(0,0,0), arrAlpha, arrMatrix, matGrad);
    			shpDraw.graphics.drawRect(0, 0, _disTarget.width, _height);
    			shpDraw.graphics.endFill();
    			bmpDraw.draw(shpDraw, null, null, BlendMode.ALPHA);
    
    			_bmpReflect.bitmapData.dispose();
    			_bmpReflect.bitmapData=bmpDraw;
    
    			_bmpReflect.filters=_disTarget.filters;
    
    			this.x=_disTarget.x;
    			this.y = (_disTarget.y + _disTarget.height) - 1;
    		}
    	}
    }
    

  • 相关阅读:
    Google字典API与语音库
    CentOS 6.0 安装字符界面/text 安装/文本安装
    W3C Strict 验证的几个注意事项
    前端开发必备的6个Firefox插件
    自制的一套Aptana配色方案
    Firebug Console 与命令行全集
    项目管理的“三边六拍”!
    不使用第三个变量,交换两变量的值 (总结篇)
    dba学习笔记
    三思涂抹oracle(笔记)
  • 原文地址:https://www.cnblogs.com/leon3286/p/1807499.html
Copyright © 2011-2022 走看看