纯AS3倒影类--Reflection

Reflection如下

package com.DNight.imgManage
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.display.GradientType;
import flash.geom.Matrix;
import flash.display.SpreadMethod
import flash.display.BlendMode

/**
* ...
* @author DN
*/
public class Reflection extends Sprite
{
   private var _img:Bitmap;
   private var _distance:Number;
   private var _offset:Number;
   private var _reflectionImgData:BitmapData
   private var _reflectionImg:Bitmap;
  
   private var _reflectionContainer:Sprite;
   private var _reflectionLight:Sprite;
   /**
   * 构造函数
   * @param newImg   倒影图片对象
   * @param distance 倒影与图片距离
   * @param offset   倒影偏移量
   */
   public function Reflection(newImg:Bitmap,distance:Number,offset:Number=100)
   {
    _img = newImg;
    _distance = distance;
    _offset = offset;
   
    addChild(_img);
    initReflection();
   }
  
   private function initReflection() {
    var imgData:BitmapData = _img.bitmapData;
    _reflectionImgData = imgData.clone();
    _reflectionImg = new Bitmap(_reflectionImgData);
   
    _reflectionContainer = new Sprite();
    _reflectionImg.scaleY *= -1;
    _reflectionImg.y = _img.y + (_img.height*2) + _distance;
    _reflectionContainer.addChild(_reflectionImg);
    _reflectionContainer.blendMode = BlendMode.LAYER;
   
    _reflectionLight = new Sprite();
    var fillType:String = GradientType.LINEAR;
    var colors:Array = [0x000000, 0xFFFFFF];
    var alphas:Array = [1, 0];
    var ratios:Array = [0, 0xFF];
    var matr:Matrix = new Matrix();
    matr.createGradientBox(_img.width,_img.height , Math.PI / 2, 0, _offset+_distance);
    var spreadMethod:String = SpreadMethod.PAD;
    _reflectionLight.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);
    _reflectionLight.graphics.drawRect(0, _img.y+_img.height+_distance, _img.width, _img.height);
    _reflectionLight.graphics.endFill();
    _reflectionLight.blendMode = BlendMode.ALPHA;
    _reflectionContainer.addChild(_reflectionLight);
    this.addChild(_reflectionContainer);
   }
  
}

}

使用方法

package
{
import com.DNight.imgManage.Reflection;
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.events.Event
/**
* ...
* @author DN
*/
public class Main extends Sprite
{
   public static const IMG_PATH:String = "img/img_01.jpg";
  
   private var _reflection:Reflection
  
   public function Main()
   {
    loadImg();
   }
   private function loadImg() {
    var loader:Loader = new Loader();
    var request:URLRequest = new URLRequest(Main.IMG_PATH);
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onImgLoadedHandle);
    loader.load(request);
   }
  
   private function onImgLoadedHandle(event:Event) {
    var img:Bitmap = event.currentTarget.content as Bitmap;
    _reflection = new Reflection(img,10);
    this.addChild(_reflection);
   }
}

}

传递Bitmap进入倒影类.然后addChild倒影,可能还有能倒影swf或者其他类型显示对象的,这个只验证了bitmap其他的不知道用这种方法是否实用?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值