Que tal gente de Cristalab. Después de beneficiarme de este foro durante muuucho tiempo, he decidido aportar alguna cosilla, así que he hecho este efecto en Flash, a ver si os gusta.
El tip siguiente se trata de crear un efecto de sombras dinámicas originadas por un foco de luz que sale del puntero del ratón. Lo bueno es que los objetos con sombras pueden ser cualquier tipo de elemento, hasta un campo de introducción de texto, como he puesto en el ejemplo siguiente:
Para esto, es necesario tener un MovieClip en el escenario con nombre "Foco", y este código en el primer frame:
Código :
function Orientacion(ObjetoRelativo:MovieClip):Number {
// La posición del ratón relativa al objeto.
RatonX = ObjetoRelativo._xmouse - (ObjetoRelativo._width / 2);
RatonY = ObjetoRelativo._ymouse - (ObjetoRelativo._height / 2);
// Por trigonometría calculamos el ángulo
Hipotenusa = Math.round(Math.sqrt(Math.pow(RatonX,2) + Math.pow(RatonY,2)));
Angulo = Math.round(Math.asin(RatonY/Hipotenusa) * Math.round(180/Math.PI));
// De esta forma se consigue que cubra los 360º
if (RatonX < 0) {Angulo = 180 - Angulo}
return Angulo;
}
function Distancia(ObjetoRelativo:MovieClip):Number {
RatonX = ObjetoRelativo._xmouse - (ObjetoRelativo._width / 2);
RatonY = ObjetoRelativo._ymouse - (ObjetoRelativo._height / 2);
// Igual que la función orientación pero solo devuelve la hipotenusa
// que es la distancia en cualquier dirección hasta el ratón.
Hipotenusa = Math.round(Math.sqrt(Math.pow(RatonX,2) + Math.pow(RatonY,2)));
return Hipotenusa;
}
function AplicaEfecto(ObjetoDestino:MovieClip) {
// Los parámetros para la sombra.
// Para que el efecto sea natural deben ser los mismos para todas las sombras.
DistanciaSombra = 10;
ColorSombra = 0x000000;
TransparenciaSombra = 1;
DesenfoqueX = 8;
DesenfoqueY = 8;
var FiltroTemporal = new flash.filters.DropShadowFilter((Distancia(ObjetoDestino)/DistanciaSombra), 180 + Orientacion(ObjetoDestino), ColorSombra, TransparenciaSombra, DesenfoqueX, DesenfoqueY);
var Filtros:Array = ObjetoDestino.filters;
Filtros.pop();
Filtros.push(FiltroTemporal);
ObjetoDestino.filters = Filtros;
}
this.onEnterFrame = function() {
// Por cada frame se aplica el efecto a todos los objetos que queramos.
AplicaEfecto(texto1);
AplicaEfecto(Perraco);
}
// Un efecto de foco MUUUYYY simple
startDrag(Foco,true);
Descarga el .fla del ejemplo.
Espero que os sea de ayuda.

Código :
import flash.geom.*; SF = new flash.filters.DropShadowFilter(); function sombra(clip){ Pm = new Point(_xmouse,_ymouse); Pc = new Point(clip._x+clip._width/2 ,clip._y + clip._height/2); SF.angle = Math.atan2((Pc.x-Pm.x),(Pm.y-Pc.y))*180/Math.PI-90; SF.distance = Point.distance(Pc, Point.interpolate(Pc,Pm,1.08)); clip.filters = [SF]; } onMouseMove = function(){ sombra(Perraco); sombra(texto1)}Le he añadido un filtro de Bevel a mayores a este ejemplo para indicar como se añaden.
El codigo de este ejemplo es el siguiente:
Código :
import flash.geom.*; SF = new flash.filters.DropShadowFilter(); BF = new flash.filters.BevelFilter(); function sombra(clip){ Pm = new Point(_xmouse,_ymouse); Pc = new Point(clip._x+clip._width/2 ,clip._y + clip._height/2); BF.angle = SF.angle = Math.atan2((Pc.x-Pm.x),(Pm.y-Pc.y))*180/Math.PI-90; SF.distance = Point.distance(Pc, Point.interpolate(Pc,Pm,1.08)); BF.distance = SF.distance/6; clip.filters = [BF,SF]; } onMouseMove = function(){ sombra(Perraco); sombra(texto1)}El valor de la distancia se amplia o reduce variando el 1.08 (entre 1 y 1.2 son adecuados)
cambiando de tema, Yekill tu avatar es el perro de Keko!!!
no por dios
Llevo un rato mirando el código, y no se como, pero hace lo mismo solo que con 50 lineas menos
Misterios de la vida.
no por dios Shock (que me tienen cansado con sus publicidades pedorras)
pues no tenia ni idea, la verdad es que lo busqué para hacer el flash y luego me lo puse de avatar
Por torrao el 21 de Junio de 2007
chau
la unica duda es el filtro bevel...... eso con que se come?
Por Eleuterio Castellano el 21 de Junio de 2007
Si te soy sincero solo he entendido "que rallao tio", y el resto me ha dejado bastante rallao, si
jpcw:
Es el filtro de biselado que hace que parezca brillante por los bordes.
Lo que Teseo quiere decir (espero no equivocarme) es que de esta forma no sólo se puede aplicar el efecto sombra, sino que se puede aplicar cualquier efecto, como sombra, bisel, desenfoque, etc...
Comento un poquillo el código de Teseo (con su permiso
Código :
// Librería para utilizar la clase Point import flash.geom.*; // Definicion del efecto SOMBRA SF = new flash.filters.DropShadowFilter(); // Definición del efecto BISELADO BF = new flash.filters.BevelFilter(); function sombra(clip){ // Posición actual del ratón Pm = new Point(_xmouse,_ymouse); // Posición actual del centro del MoviCLip sobre el que vamos a aplicar el efecto. Pc = new Point(clip._x+clip._width/2 ,clip._y + clip._height/2); // Definición del ángulo para el efecto SOMBRA y para el efecto BISEL // (Son exáctamente el mismo) SF.angle = Math.atan2((Pc.x-Pm.x),(Pm.y-Pc.y))*180/Math.PI-90; BF.angle = SF.angle; // Definición de la distancia para el efecto SOMBRA SF.distance = Point.distance(Pc, Point.interpolate(Pc,Pm,1.08)); // Definición de la distancia para el efecto BISEL BF.distance = SF.distance/6; // Se aplican los dos filtros al MoviClip. // Si, por ejemplo, aquí se pusiera clip.filters = [SF] sólo se aplicaría el efecto SOMBRA // y lo mismo con BF, que sería para BISEL. clip.filters = [BF,SF]; }Por carlosudea el 21 de Junio de 2007
Por Buzu el 21 de Junio de 2007
http://www.grupoellitte.com
aun que casi no se nota, esta en los botones y se supones es la sobra que deja la lamparita....
yo no agregue el bevel pero igual no me gusta mucho como se ve en las letras, en el perro se ve cool, pero en las letras como que no, la verdadera razon por la que no hagrague el bevel es por que al momento de escribir el codigo no se me ocurrio
Por penholder el 21 de Junio de 2007
Por Mr Konfleis el 21 de Junio de 2007
Por Sergio el 22 de Junio de 2007
Por glsmaster el 22 de Junio de 2007
Por Thor el 22 de Junio de 2007
Por imortelle el 22 de Junio de 2007
Por erodc2 el 23 de Junio de 2007
Por Megazon el 23 de Junio de 2007
Por MEGA el 23 de Junio de 2007
Por Karina el 23 de Junio de 2007
Por vanvanero el 24 de Junio de 2007
Por falher el 25 de Junio de 2007
esto esta realmente Fuerte ah!
BUENA SUERTE ...!
Por Romina el 13 de Agosto de 2007
Por zac el 19 de Febrero de 2008
Por peke418 el 18 de Mayo de 2008
Por CS... el 23 de Mayo de 2008
Por hector_lis@hotmail.c el 15 de Octubre de 2008
Por Plusky el 31 de Octubre de 2008
Por sombras el 07 de Noviembre de 2008
Por CINDY VANESSA el 26 de Junio de 2009
Por chucho el 11 de Noviembre de 2009
Por riczon el 11 de Noviembre de 2009
Por macaniola el 11 de Febrero de 2010
Por lol el 06 de Mayo de 2010
Por matt el 01 de Septiembre de 2010
Por johan el 11 de Enero de 2011
Por braulio el 05 de Abril de 2011
Por maria el 13 de Mayo de 2011
Por luis cedeño el 03 de Noviembre de 2011
Por hojan bastardo caden el 14 de Noviembre de 2011