as3 倒影

转载 2011年01月14日 11:28:00

倒影类:
package com.flashdev.bitmap ...{
   
    /**//*
           
    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 _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, set_numStartFade:Number, set_numMidLoc:Number, set_numEndFade:Number, set_numSkewX:Number, set_numScale:Number) ...{
            super()
            _disTarget = set_disTarget;
            _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, _disTarget.height, true, 0);
            var matSkew:Matrix = new Matrix(1, 0, _numSkewX, -1 * _numScale, 0, _disTarget.height);
            var recDraw:Rectangle = new Rectangle(0, 0, _disTarget.width, _disTarget.height * (2 - _numScale));
            var potSkew:Point = matSkew.transformPoint(new Point(0, _disTarget.height));
            matSkew.tx = potSkew.x * -1;
            matSkew.ty = (potSkew.y - _disTarget.height) * -1;
            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, _disTarget.height, 0.5 * Math.PI);
            shpDraw.graphics.beginGradientFill(GradientType.LINEAR, new Array(0,0,0), arrAlpha, arrMatrix, matGrad)
            shpDraw.graphics.drawRect(0, 0, _disTarget.width, _disTarget.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;         
        }
    }

测试类:

package ...{
   
    import com.flashdev.bitmap.*;   
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import flash.filters.*;

    public class ReflectionTest extends Sprite ...{
       
        // Constructor
        public function ReflectionTest() ...{
            // Setup stage
            this.stage.align = StageAlign.TOP_LEFT;
            this.stage.scaleMode = StageScaleMode.NO_SCALE;
           
            // Load image
            var loadImg:Loader = new Loader();
            loadImg.contentLoaderInfo.addEventListener(Event.COMPLETE, onImgLoaded);
            loadImg.load(new URLRequest("image.jpg"));
        }
       
        // Called when image is loaded
        private function onImgLoaded(event:Event):void ...{
           
            var sprImg:Sprite = new Sprite();
           
            // Attach image
            var disImg:DisplayObject = event.target.content;
            var filGlow:GlowFilter = new GlowFilter(0x000000, .3, 8, 8, 1, 3, false, false);
            disImg.filters = [filGlow];
            sprImg.addChild(disImg);
           
            // Add reflection
            var sprReflect:Reflection = new Reflection(disImg, .4, .2, 0, 0, 1);
            sprImg.addChild(sprReflect);           
           
            // Center
            sprImg.x = (this.stage.stageWidth - sprImg.width) / 2;
            sprImg.y = (this.stage.stageHeight - sprImg.height) / 2;
           
            this.addChild(sprImg);

}

}

}

Flash AS3)分享一个ActionScript3的倒影类

再此之前一段时间我曾分享过一个Flex版本的倒影类,接受uicompnent组件作为倒影目标,参考《Flex)一个Flex倒影组件类 Reflactor.as 的使用》!因为用到了一些mx类包下的类及...
  • taotao3686
  • taotao3686
  • 2013年03月07日 15:43
  • 668

倒影(reflections)效果的实现

1、简介 当站在湖畔岸边或者镜子面前的时候,都可以看到倒着的自己,那种效果就叫倒影,或者叫镜面反射。在SPE中也支持这种效果,实现的基本思路是把物体根据反射平面镜像之后再绘制一遍,绘制镜像时有几个问题...
  • u011988946
  • u011988946
  • 2013年09月12日 22:13
  • 1925

实现TextView的倒影效果

让TextView显示倒影效果的自定义TextView控件
  • u010929231
  • u010929231
  • 2015年10月29日 14:13
  • 921

Android 滑动效果进阶篇(六)—— 倒影效果

原文 上篇介绍了使用Animation实现3D动画旋转翻页效果,现在介绍图片倒影实现,先看效果图 本示例主要通过自定义Gallery和ImageAdapter(继承自BaseA...
  • a123demi
  • a123demi
  • 2014年07月03日 14:24
  • 837

GLSL实现水面倒影

使用两相机,一个master相机, 主要负责场景的渲染, 另一个rtt相机, 和master相机建立为镜面投影相机,用于在和master相机的纵向镜像投影,从而获取master投影场景的逆场景, 渲染...
  • u010002704
  • u010002704
  • 2014年12月24日 10:20
  • 1659

IOS实现UIImage倒影的三种方法

实现一 使用一个继承自UIView的类来包含要实现倒影效果的图片,重写这个UIView子类的绘图方法,以实现图片于倒影, 然后把这个View 添加到相应的地方显示。 代码: CKReflect...
  • guicl0219
  • guicl0219
  • 2014年03月23日 21:20
  • 3538

android 实现倒影

首先,文章中出现的Gallery 已经不再适用,替代方法请看我的另一篇文章http://blog.csdn.net/xiangzhihong8/article/details/51120460 ...
  • xiangzhihong8
  • xiangzhihong8
  • 2016年04月17日 23:24
  • 1436

QT如何实现控件倒影特效

QT如何实现控件倒影特效 在工作中,我们有时会有以下需求: 想要为某些控件不只是图片加倒影特效,例如: 这样: 例如: 这样: 于是,在我的潜心研究之下,终于找到了两种实现方法: ...
  • fan_xingwang
  • fan_xingwang
  • 2018年01月05日 16:14
  • 76

使用css3 box-reflect设计倒影效果

使用css3 box-reflect设计倒影效果 摘要: 说起倒影效果,在传统网页中,我们只能使用photoshop进行事先将倒影设计好,然后导入到网页中,这样不但耗费资...
  • kevin_cyj
  • kevin_cyj
  • 2016年06月07日 00:41
  • 3084

iOS学习笔记-083.倒影效果

倒影效果 一简单说明 二代码 1 VCViewm 2 ViewControllerm 三图示倒影效果一、简单说明我们可以复制层创建一个复制层,然后旋转,添加相应的色差。即可达到效果 创建界面的时候,...
  • qiwenmingshiwo
  • qiwenmingshiwo
  • 2017年07月22日 00:43
  • 431
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:as3 倒影
举报原因:
原因补充:

(最多只允许输入30个字)