• [ActionScript 3.0] 创建倒影


     1 package 
     2 {
     3     import flash.display.Bitmap;
     4     import flash.display.BitmapData;
     5     import flash.display.DisplayObject;
     6     import flash.display.GradientType;
     7     import flash.display.Loader;
     8     import flash.display.Shape;
     9     import flash.display.Sprite;
    10     import flash.events.Event;
    11     import flash.geom.Matrix;
    12     import flash.geom.Point;
    13     import flash.net.URLRequest;
    14 
    15     /**
    16       * ...
    17       * @author Frost.Yen
    18       */
    19     [SWF(width=800, height=1000, backgroundColor=0x000000, frameRate=30)]
    20     public class Reflection extends Sprite
    21     {
    22         private var ldr:Loader=new Loader();
    23         private var pic:Sprite=new Sprite();
    24         public function Reflection()
    25         {
    26             ldr.load(new URLRequest("http://hiphotos.baidu.com/frostyen/pic/item/7e49d8b53f6b48ffd9335aa2.jpg"));
    27             ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
    28         }
    29 
    30         private function onImageLoaded(e:Event):void
    31         {
    32             this.addChild(pic);
    33             pic.addChild(ldr);
    34             pic.x = 200;
    35             pic.y = 10;
    36             ldr.scaleX = ldr.scaleY = .5;
    37             createRef(pic,5,0);
    38         }
    39         /**
    40            *
    41            * @param obj  需创建倒影的对象
    42            * @param distance  对象与倒影的距离
    43            * @param offset  倒影的偏移量
    44            */
    45         private function createRef(obj:DisplayObject,distance:Number=5,offset:Number=0):void
    46         {
    47             // 倒置
    48             var bd:BitmapData = new BitmapData(obj.width,obj.height,true);
    49             var mtx:Matrix = new Matrix();
    50             mtx.d = -1;
    51             mtx.ty = bd.height;
    52             bd.draw(obj, mtx);
    53 
    54             // 添加倒影渐变
    55             var _int = bd.width;
    56             var _height:int = bd.height;
    57 
    58             mtx.createGradientBox(_width, _height, 0.5 * Math.PI,0,offset );
    59             var shape:Shape = new Shape();
    60             shape.graphics.beginGradientFill(GradientType.LINEAR, [0,0,0], [0.6,0.1, 0], [0,200, 255], mtx);
    61             shape.graphics.drawRect(0, 0, _width, _height);
    62             shape.graphics.endFill();
    63             var mask_bd:BitmapData = new BitmapData(_width,_height,true,0);
    64             mask_bd.draw(shape);
    65             // 生成最终效果
    66             bd.copyPixels(bd, bd.rect, new Point(0, 0), mask_bd, new Point(0, 0), false);
    67             // 将倒影放置于对象下方
    68             var ref:Bitmap = new Bitmap(bd);
    69             ref.y = obj.height + obj.y + distance;
    70             ref.x = obj.x;
    71             obj.parent.addChild(ref);
    72         }
    73     }
    74 
    75 }
  • 相关阅读:
    修改Linux中的用户名
    阿里云服务器安全设置
    【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml
    【solr专题之四】关于VelocityResponseWriter
    django概述
    从烙铁手到IT男
    docker安装
    redhat之数据挖掘R语言软件及rstudio-server服务的安装
    分享一下 aix安装python提示C编译器问题的办法
    Android 播放Gif 动画
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4589282.html
Copyright © 2020-2023  润新知