En ocasiones necesitamos usar el perfil de un texto o de un logo para trabajar sobre el con algún efecto y/o filtro.
Este código lo consigue de una forma muy simple. Toma la "sombra" por al menos 4 lados, sumándola en un bitmap de salida.
Veamos el código y unos ejemplos:
Código :
//cargamos el MC con el dibujo o texto desde la biblioteca,
// nombre Vinculación: mc_b Nombre cargado: mc0.
attachMovie("mc_b", "mc0", this.getNextHighestDepth());
// pasar el nombre del MC a perfilar y opcionalmente un color y un grosor
// por defecto (sin pasar el parámetro) perfila en NEGRO y grueso 1)
function perfilar(mc0, color, grueso){
bm = new flash.display.BitmapData(mc0._width, mc0._height, true,0);
bm2 = bm.clone(); bm3 = bm.clone(); bm.draw(mc0);
perfil = this.createEmptyMovieClip("perfil", this.getNextHighestDepth());
perfil.attachBitmap(bm3, 0);
perfil._x =mc0._x; perfil._y =mc0._y;
grueso ? g = grueso : g = 1;
for (k=0; k<360; k+=90/g){
bm2.applyFilter(bm,bm.rectangle,null,new flash.filters.BevelFilter(-g,k,color,100,0,0,0,0,100,1,"inner",true));
bm3.draw(bm2);
}
bm.dispose(); bm2.dispose();
return (perfil);
}
//Ejemplo Base : Perfil Simple
// usamos la llamada asignándola al nombre que deseemos de MC.
TextMCP = perfilar(mc0);
TextMCP._y=80; // colocamos el nuevo MC a nuestro gusto.
//Ejemplo de uso: Neón Intermitente.
TextMCP2 = perfilar(mc0,0xfff00ff);
TextMCP2._y = 170;
BF2= new flash.filters.BevelFilter(2,225,0xff0000,.6,0xffffff,.8,2,2,1,1,"inner",false);
GF1 = new flash.filters.GlowFilter(0xf000f0, 1, 5, 5, 4, 1,false, false);
GF2 = new flash.filters.GlowFilter(0xff00ff, 1, 10, 10, 1.7, 5, false, false);
setInterval(neon, 500);
function neon(){random(10)<6 ? TextMCP2.filters =[GF1,BF2] :TextMCP2.filters = [GF1,GF2];}
//Ejemplo de uso: Profundidad.
for (var n=0; n<32; n++){
ma = perfilar(mc0,0xff000000+256*256*8*n);
ma._y = 280-n/2; ma._x = n/2;
}
//Ejemplo de uso: Aleatorio.
setInterval(aleatorio, 2000);
function aleatorio(){
perfil.removeMovieClip()
ma = perfilar(mc0,rd2,ld);
rd = random(0xffffff); rd2 = random(0xffffff); ld = random(8);
BF3= new flash.filters.BevelFilter(ld,225,rd,.6,rd2,.8,5,2,1,1,"inner",false);
GF3 = new flash.filters.GlowFilter(rd , 1, 10, 10, 1, 5, false, true);
random(10)<5 ? GF3.inner= !GF3.inner : null;
random(10)<5 ? GF3.knockout =!GF3.knockout: null;
random(10)<5 ? BF3.type= "inner" : BF3.type = "outer";
random(10)<5 ? ma.filters =[BF3,GF3]: ma.filters =[BF3];
ma._y = 364;
}