ReflectionMaterial.as
上传用户:chuer333
上传日期:2022-06-13
资源大小:906k
文件大小:1k
源码类别:

FlashMX/Flex源码

开发平台:

Flex

  1. package com.dougmccune.containers.materials
  2. {
  3. import flash.display.BlendMode;
  4. import flash.display.DisplayObject;
  5. import flash.display.GradientType;
  6. import flash.display.Sprite;
  7. import flash.geom.Matrix;
  8. import org.papervision3d.materials.MovieMaterial;
  9. public class ReflectionMaterial extends MovieMaterial
  10. {
  11. public function ReflectionMaterial(movieAsset:DisplayObject=null, transparent:Boolean=true, animated:Boolean=true)
  12. {
  13. super(movieAsset, transparent, animated);
  14. }
  15. /**
  16.  * Basically we're flipping the image vertically, then drawing a gradient over it and drawing that using
  17.  * the ALPHA blend mode.
  18.  */
  19. override public function drawBitmap():void {
  20. var mtx:Matrix = new Matrix();
  21. mtx.scale( movie.scaleX, -movie.scaleY );
  22. mtx.translate(0, movie.height);
  23. bitmap.draw( movie, mtx, movie.transform.colorTransform, BlendMode.LAYER );
  24. var sprite:Sprite = new Sprite();
  25. var alphas:Array = [0, .2];
  26. var ratios:Array = [150, 255];
  27. var matr:Matrix = new Matrix();
  28. matr.createGradientBox(bitmap.width, bitmap.height, Math.PI/2, 0, 0);
  29. sprite.graphics.beginGradientFill(GradientType.LINEAR, [0x000000, 0x000000], alphas, ratios, matr);  
  30. sprite.graphics.drawRect(0,0,bitmap.width,bitmap.height);
  31. bitmap.draw(sprite, mtx, null, BlendMode.ALPHA);
  32. }
  33. }
  34. }