Home » AS3 »Class »POO » Currently Reading:

Clase de ActionScript 3 para añadir sombras a MovieClips

agosto 14, 2007 AS3, Class, POO 2 Comments
Clase de ActionScript 3 para añadir sombras a MovieClips

Esta es una sencilla clase de ActionScript 3 que he escrito para añadir y modificar fácilmente sombras a MovieClips.

Lo que hago simplemente es implementar la clase DropShadowFilter para añadirle un filtro de sombra al clip.

La clase se compone básicamente de dos funciones iniSombra() y update(). En la primera añado los valores por defecto que tendrá el filtro de sombra y en la segunda es la funciónque añadirá el filtro al MovieClip con dichos parámetros. Estas dos funciones son llamadas desde el constructor de la clase.

  1. private function iniSombra():void
  2. {
  3.    _color = 0x000000;
  4.    _angulo = 45;
  5.    _alfa = 0.7;
  6.    _blurX = 5;
  7.    _blurY = 5;
  8.    _distancia = 5;
  9.    _strength = 0.65;
  10.    _inner = false;
  11.    _knockout = false;
  12.    _calidad = BitmapFilterQuality.HIGH;
  13. }
  14. private function update():void
  15. {
  16.    _filtros = new Array();
  17.    _sombra = new DropShadowFilter(_distancia,_angulo,_color,_alfa,_blurX,_blurY,_strength,_calidad,_inner,_knockout);
  18.    _filtros.push(_sombra);
  19.    _clip.filters = _filtros;
  20. }

Además la clase incorpora una serie de setters para modificar los parámetros del filtro. Estos setters realizan una llamada a la función update() para actualizar la sombra al cambiar cualquier parámetro.

  1. public function set color(color:Number):void
  2. {
  3.    _color = color;
  4.    update();
  5. }

Esta sería la clase completa:

  1. package
  2. {
  3.    import flash.display.Sprite;
  4.    import flash.filters.BitmapFilter;
  5.    import flash.filters.BitmapFilterQuality;
  6.    import flash.filters.DropShadowFilter;
  7.    //------------------------------------------
  8.    public class Sombra extends Sprite
  9.    {
  10.       private var _ruta:Sprite;
  11.       private var _clip:Object;
  12.       private var _filtros:Array;
  13.       private var _sombra:BitmapFilter;
  14.       private var _color:Number;
  15.       private var _angulo:Number;
  16.       private var _alfa:Number;
  17.       private var _blurX:Number;
  18.       private var _blurY:Number;
  19.       private var _distancia:Number;
  20.       private var _strength:Number;
  21.       private var _inner:Boolean;
  22.       private var _knockout:Boolean;
  23.       private var _calidad:Number;
  24.       //------------------------------------------
  25.       public function Sombra(clip:Object)
  26.       {
  27.          _ruta = clip.parent;
  28.          _clip = clip;
  29.          iniSombra();
  30.          update();
  31.       }
  32.       //------------------------------------------
  33.       private function iniSombra():void
  34.       {
  35.          _color = 0x000000;
  36.          _angulo = 45;
  37.          _alfa = 0.7;
  38.          _blurX = 5;
  39.          _blurY = 5;
  40.          _distancia = 5;
  41.          _strength = 0.65;
  42.          _inner = false;
  43.          _knockout = false;
  44.          _calidad = BitmapFilterQuality.HIGH;
  45.       }
  46.       //------------------------------------------
  47.       private function update():void
  48.       {
  49.          _filtros = new Array();
  50.          _sombra = new DropShadowFilter(_distancia,_angulo,_color,_alfa,_blurX,_blurY,_strength,_calidad,_inner,_knockout);
  51.          _filtros.push(_sombra);
  52.          _clip.filters = _filtros;
  53.       }
  54.       //------------------------------------------
  55.       public function set color(color:Number):void
  56.       {
  57.          _color = color;
  58.          update();
  59.       }
  60.       //------------------------------------------
  61.       public function set angulo(angulo:Number):void
  62.       {
  63.          _angulo = angulo;
  64.          update();
  65.       }
  66.       //------------------------------------------
  67.       public function set alfa(alfa:Number):void
  68.       {
  69.          _alfa = alfa;
  70.          update();
  71.       }
  72.       //------------------------------------------
  73.       public function set blurX(blurX:Number):void
  74.       {
  75.          _blurX = blurX;
  76.          update();
  77.       }
  78.       //------------------------------------------
  79.       public function set blurY(blurY:Number):void
  80.       {
  81.          _blurY = blurY;
  82.          update();
  83.       }
  84.       //------------------------------------------
  85.       public function set distancia(distancia:Number):void
  86.       {
  87.          _distancia = distancia;
  88.          update();
  89.       }
  90.       //------------------------------------------
  91.       public function set strength(strength:Number):void
  92.       {
  93.          _strength = strength;
  94.          update();
  95.       }
  96.       //------------------------------------------
  97.       public function set inner(inner:Boolean):void
  98.       {
  99.          _inner = inner;
  100.          update();
  101.       }
  102.       //------------------------------------------
  103.       public function set knockout(knockout:Boolean):void
  104.       {
  105.          _knockout = knockout;
  106.          update();
  107.       }
  108.       //------------------------------------------
  109.       public function set calidad(calidad:Number):void
  110.       {
  111.          _calidad = calidad;
  112.          update();
  113.       }
  114.       //------------------------------------------
  115.    }
  116. }

Un ejemplo de uso podría ser este (en nuestro .fla):

  1. import Sombra;
  2. var sombra1:Sombra = new Sombra(logo1);
  3. var sombra2:Sombra = new Sombra(logo2);
  4. var sombra3:Sombra = new Sombra(logo3);
  5. sombra2.blurX = 15;
  6. sombra2.blurY = 15;
  7. sombra2.angulo = 90
  8. sombra2.distancia = 20;
  9. sombra3.alfa = 1
  10. sombra3.color = 0x0066CC
  11. sombra3.blurX = 15;
  12. sombra3.blurY = 15;
  13. sombra3.distancia = 0;

Compártelo:

Clase de ActionScript 3 para añadir sombras a MovieClips
Visto 6.340 veces

Currently there are "2 comments" on this Article:

  1. sslag dice:

    Muy bueno y útil.
    un simple
    new Sombra(miobjetovisible)

    y listo.
    Gracias

  2. Miguel Felix dice:

    muy bueno, gracias por compartar tus conocimientos…

Comment on this Article:








AdvertisementAdvertisementAdvertisementAdvertisement

Recibe las novedades por email



Map

Ranking

Codigoactionscript.org: 4.65 sobre 5 (106 valoraciones)

twitter-widget.com