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.
{
_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.
{
_color = color;
update();
}
Esta serÃa la clase completa:
{
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):
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;
Post relacinonados:
2 Comments »
RSS feed for comments on this post. TrackBack URI









Muy bueno y útil.
un simple
new Sombra(miobjetovisible)
y listo.
Gracias
muy bueno, gracias por compartar tus conocimientos...