My favorites | Sign in
Project Logo
                
Changes to /trunk/as3/undolibrary/sfx/ReflexMe.as
r0 vs. r38   Edit
  Compare: vs.   Format:
Revision r38
Go to: 
Project members, sign in to write a code review
/trunk/as3/undolibrary/sfx/ReflexMe.as   r0 /trunk/as3/undolibrary/sfx/ReflexMe.as   r38
  1 package undolibrary.sfx {
  2 /*
  3 ** @name : ReflexMe.as
  4 ** @description : Make a Reflex Effect on any MovieClip
  5 ** @author : =undo=
  6 ** @web : http://www.undolog.com
  7 ** @email : g.fazioli@undolog.com
  8 **
  9 ** @ver : 1.0
  10 */
  11
  12 import flash.display.*;
  13 import flash.filters.*;
  14 import flash.geom.*;
  15 import flash.text.*;
  16 import flash.events.*;
  17
  18 public class ReflexMe extends MovieClip {
  19 //
  20 private var __bmpd:BitmapData;
  21 private var __bmp:Bitmap;
  22 private var __mask:Shape;
  23 //
  24 protected var __oWidth:Number
  25 protected var __oHeight:Number;
  26 //
  27 protected var __gradientRadial:Boolean = false;
  28 protected var __reflexOffset:Number = 0;
  29 protected var __gradientOffset:Number = 128;
  30 protected var __alphaOffset:Number = .5;
  31 //
  32 protected var __matrix:Matrix;
  33 //
  34 public function ReflexMe():void {
  35 addEventListener(Event.ADDED_TO_STAGE, init );
  36 }
  37
  38 /*
  39 ** @name : init()
  40 */
  41 protected function init(e:Event = null):void {
  42 // save original clip dimension
  43 __oWidth = this.width;
  44 __oHeight = this.height;
  45 // bitmapdata/bitmap reflex
  46 __bmpd = new BitmapData( this.width, this.height, true, 0x000000);
  47 __bmpd.draw( this );
  48 __bmp = new Bitmap( __bmpd );
  49 addChild( __bmp );
  50 __bmp.scaleY = -1;
  51 __bmp.y = __oHeight*2 + __reflexOffset;
  52 __bmp.cacheAsBitmap = true;
  53 // gradient
  54 __mask = new Shape();
  55 __mask.cacheAsBitmap = true;
  56 __mask.y = __oHeight + __reflexOffset;
  57 __matrix = new Matrix();
  58 __matrix.createGradientBox(__oWidth, __oHeight, Math.PI/2);
  59 doGradient();
  60 addChild( __mask );
  61 __bmp.mask = __mask;
  62 }
  63
  64 /*
  65 ** @name : render()
  66 */
  67 protected function render(e:Event = null):void {
  68 __bmpd.draw( this );
  69 }
  70
  71 /*
  72 ** @name : doGradient()
  73 */
  74 protected function doGradient():void {
  75 with( __mask.graphics ) {
  76 clear();
  77 beginGradientFill( (__gradientRadial?GradientType.RADIAL:GradientType.LINEAR), [0x000000,0x000000], [__alphaOffset, 0], [0, __gradientOffset], __matrix);
  78 drawRect(0, 0, __oWidth, __oHeight);
  79 endFill();
  80 }
  81 }
  82
  83 /*
  84 ** @name : reflexOffset
  85 */
  86 public function get reflexOffset():Number { return __reflexOffset; }
  87 public function set reflexOffset(v:Number):void {
  88 __reflexOffset = v;
  89 __bmp.y = __oHeight*2 + __reflexOffset;
  90 __mask.y = __oHeight + __reflexOffset;
  91 }
  92
  93 /*
  94 ** @name : gradientOffset
  95 */
  96 public function get gradientOffset():Number { return __gradientOffset; }
  97 public function set gradientOffset(v:Number):void {
  98 __gradientOffset = v;
  99 doGradient();
  100 }
  101
  102 /*
  103 ** @name : alphaOffset
  104 */
  105 public function get alphaOffset():Number { return __alphaOffset; }
  106 public function set alphaOffset(v:Number):void {
  107 __alphaOffset = v;
  108 doGradient();
  109 }
  110
  111 /*
  112 ** @name : gradientRadial
  113 */
  114
  115 public function get gradientRadial():Boolean { return __gradientRadial; }
  116 public function set gradientRadial(v:Boolean):void {
  117 __gradientRadial = v;
  118 doGradient();
  119 }
  120 }
  121 }
Hosted by Google Code