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.
- private function iniSombra():void
- {
- _color = 0x000000;
- _angulo = 45;
- _alfa = 0.7;
- _blurX = 5;
- _blurY = 5;
- _distancia = 5;
- _strength = 0.65;
- _inner = false;
- _knockout = false;
- _calidad = BitmapFilterQuality.HIGH;
- }
- private function update():void
- {
- _filtros = new Array();
- _sombra = new DropShadowFilter(_distancia,_angulo,_color,_alfa,_blurX,_blurY,_strength,_calidad,_inner,_knockout);
- _filtros.push(_sombra);
- _clip.filters = _filtros;
- }
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.
- public function set color(color:Number):void
- {
- _color = color;
- update();
- }
Esta sería la clase completa:
- package
- {
- import flash.display.Sprite;
- import flash.filters.BitmapFilter;
- import flash.filters.BitmapFilterQuality;
- import flash.filters.DropShadowFilter;
- //------------------------------------------
- public class Sombra extends Sprite
- {
- private var _ruta:Sprite;
- private var _clip:Object;
- private var _filtros:Array;
- private var _sombra:BitmapFilter;
- private var _color:Number;
- private var _angulo:Number;
- private var _alfa:Number;
- private var _blurX:Number;
- private var _blurY:Number;
- private var _distancia:Number;
- private var _strength:Number;
- private var _inner:Boolean;
- private var _knockout:Boolean;
- private var _calidad:Number;
- //------------------------------------------
- public function Sombra(clip:Object)
- {
- _ruta = clip.parent;
- _clip = clip;
- iniSombra();
- update();
- }
- //------------------------------------------
- private function iniSombra():void
- {
- _color = 0x000000;
- _angulo = 45;
- _alfa = 0.7;
- _blurX = 5;
- _blurY = 5;
- _distancia = 5;
- _strength = 0.65;
- _inner = false;
- _knockout = false;
- _calidad = BitmapFilterQuality.HIGH;
- }
- //------------------------------------------
- private function update():void
- {
- _filtros = new Array();
- _sombra = new DropShadowFilter(_distancia,_angulo,_color,_alfa,_blurX,_blurY,_strength,_calidad,_inner,_knockout);
- _filtros.push(_sombra);
- _clip.filters = _filtros;
- }
- //------------------------------------------
- public function set color(color:Number):void
- {
- _color = color;
- update();
- }
- //------------------------------------------
- public function set angulo(angulo:Number):void
- {
- _angulo = angulo;
- update();
- }
- //------------------------------------------
- public function set alfa(alfa:Number):void
- {
- _alfa = alfa;
- update();
- }
- //------------------------------------------
- public function set blurX(blurX:Number):void
- {
- _blurX = blurX;
- update();
- }
- //------------------------------------------
- public function set blurY(blurY:Number):void
- {
- _blurY = blurY;
- update();
- }
- //------------------------------------------
- public function set distancia(distancia:Number):void
- {
- _distancia = distancia;
- update();
- }
- //------------------------------------------
- public function set strength(strength:Number):void
- {
- _strength = strength;
- update();
- }
- //------------------------------------------
- public function set inner(inner:Boolean):void
- {
- _inner = inner;
- update();
- }
- //------------------------------------------
- public function set knockout(knockout:Boolean):void
- {
- _knockout = knockout;
- update();
- }
- //------------------------------------------
- public function set calidad(calidad:Number):void
- {
- _calidad = calidad;
- update();
- }
- //------------------------------------------
- }
- }
Un ejemplo de uso podría ser este (en nuestro .fla):
- import Sombra;
- var sombra1:Sombra = new Sombra(logo1);
- var sombra2:Sombra = new Sombra(logo2);
- var sombra3:Sombra = new Sombra(logo3);
- sombra2.blurX = 15;
- sombra2.blurY = 15;
- sombra2.angulo = 90
- sombra2.distancia = 20;
- sombra3.alfa = 1
- sombra3.color = 0x0066CC
- sombra3.blurX = 15;
- sombra3.blurY = 15;
- sombra3.distancia = 0;
Compártelo:
Visto 9.025 veces
Muy bueno y útil.
un simple
new Sombra(miobjetovisible)
y listo.
Gracias
muy bueno, gracias por compartar tus conocimientos…