El efecto reflejo se ha vuelto muy popular en la Web 2.0, en este tip les mostraré una función en Actionscript 3 para producirlo.
Código :
function mirror(target:MovieClip, maskColor:String):void
{
/*Este código copia el MovieClip al que queremos aplicar el reflejo y lo posiciona bajo el y lo invierte*/
var targetClass:Class = Object(target).constructor;
var targetCopy:MovieClip = new targetClass();
targetCopy.y = target.y + target.height;
targetCopy.x = target.x;
targetCopy.scaleY = -1;
targetCopy.width = target.width;
targetCopy.height = target.height;
addChild(targetCopy);
/*Este código construye un Gradient que será aplicado a la copia del MovieClip para que simule el reflejo*/
var msk:MovieClip = new MovieClip();
var fillType:String = GradientType.LINEAR;
var colors:Array = [maskColor, maskColor];
var alphas:Array = [0, 1];
var ratios:Array = [0, 255];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(target.width / 2, target.height / 2, Math.PI / 2, 0, 0);
var spreadMethod:String = SpreadMethod.PAD;
msk.graphics.beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod);
msk.graphics.drawRect(0, 0, target.width, target.height);
addChild(msk);
msk.x = targetCopy.x - targetCopy.width / 2;
msk.y = targetCopy.y - targetCopy.height / 2;
}
mirror(cl, "0xFFFFFF");
Para utilizar esta función es necesario que el MovieClip a reflejar tenga marcada la casilla de Exportar para Actionscript y se le asigne un nombre de Clase.
Si el Gradient creado por Actionscript no te convence puedes crear uno personalizado, exportarlo para actionscript y llamarlo desde la función.
Aqui el ejemplo:

En javascript tendrias que recurrir al objeto canvas y tratar de filtrarlo para IE y muchos problemas más, dios que hermoso es flash para esto.
Por GersonM el 27 de Septiembre de 2007
Lástima que no se pueda editar.
Al probar el código en otro archivo el reflejo no aparecía invertido por lo que he sustituido:
Código :
Por:
Código :
Espero les sea útil el tip.
Por HenranRivas (logout) el 27 de Septiembre de 2007
HenranRivas (logout)_blog :
Los tips son revisados antes de pasarlos a portada de clab. ¿que pasaría si alguien envía un tip y cuando esté en portada decide editarlo y colocar spam en él? tendríamos un hermoso mensaje de spam en la home de clab...
Así que la posibilidad de editar un post que está en portada no es una opción que vaya a ser tenida en cuenta jamás...
Para editar o actualizar los tips mandarme un MP a mi o a Mx.
PD: "Vista preliminar" RLZ!
Zguillez :
La idea es que un autor pueda editar sus tips o tutoriales, al hacerlo, el sistema envía un mensaje directo a los editores de Clab para que verifiquen el cambio hecho y lo autoricen para portada. Así nos arreglamos problemas.
Freddie :
Zguillez :
La idea es que un autor pueda editar sus tips o tutoriales, al hacerlo, el sistema envía un mensaje directo a los editores de Clab para que verifiquen el cambio hecho y lo autoricen para portada. Así nos arreglamos problemas.
Por Sebastian Garcia el 27 de Septiembre de 2007
Pero buen aporte...
Por Señor Oz el 27 de Septiembre de 2007
Señor Oz, en la librería damos click derecho al MovieClip que queremos aplicar el reflejo y seleccionamos la opción "Linkage" (está abajo de "Properties") y ahi marcamos la casilla de "Exportar para Actionsctipt, al hacerlo automaticamente aparecerá un nombre de clase en el cuadro superior, dependiendo del nombre del MC. Ese es el nombre de clase al que me refiero, y tienes que tener Flash CS3 para que aparezca esa opción.
Claro que se puede hacer el efecto de Coverflow, solo necesitas adaptarlo un poco.
Por Sebastian Garcia el 27 de Septiembre de 2007
1120: Access of undefined property cl.
pero en el codigo no veo donde le asignas al mc el efecto...???
Gracias
" cl " es el nombre de instancia del MovieClip al que le quieres dar el efecto.
Si tienes problemas entendiendo los códigos te recomiendo leas algunos tutoriales de aquí.
Por Sebastian Garcia el 27 de Septiembre de 2007
Por Sebastian Garcia el 27 de Septiembre de 2007
Gracias
Carlos
Por fernandopitecus el 27 de Septiembre de 2007
es as 2? y la otra es: podrias explicar unpoco mas lo de el nombre de la clase?
muchas gracias
Por Sebastian Garcia el 27 de Septiembre de 2007
es AS3 (Flash CS3), si no estoy mal vendria siendo como el Identifier...
fernandopitecus :
es as 2? y la otra es: podrias explicar unpoco mas lo de el nombre de la clase?
muchas gracias
Carloz.Yanez :
Por Sebastian Garcia el 27 de Septiembre de 2007
Gracias
Carloz.Yanez :
Por Sebastian Garcia el 27 de Septiembre de 2007
mi imagen no se ve como la de la muestra, la duplica, la pone debajo, le aplica el gradient pero no la invierte... a que se debe
Por Sebastian Garcia el 27 de Septiembre de 2007
Por Sebastian Garcia el 27 de Septiembre de 2007
esto:
Código :
function mirror(target:MovieClip, maskColor:String):void { /*Este código copia el MovieClip al que queremos aplicar el reflejo y lo posiciona bajo el y lo invierte*/ var targetClass:Class = Object(target).constructor; var targetCopy:MovieClip = new targetClass(); targetCopy.y = target.y target.height; targetCopy.x = target.x; targetCopy.rotation = 180; targetCopy.width = target.width; targetCopy.height = target.height; addChild(targetCopy); /*Este código construye un Gradient que será aplicado a la copia del MovieClip para que simule el reflejo*/ var msk:MovieClip = new MovieClip(); var fillType:String = GradientType.LINEAR; var colors:Array = [maskColor, maskColor]; var alphas:Array = [0, 1]; var ratios:Array = [0, 255]; var matrix:Matrix = new Matrix(); matrix.createGradientBox(target.width / 2, target.height / 2, Math.PI / 2, 0, 0); var spreadMethod:String = SpreadMethod.PAD; msk.graphics.beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod); msk.graphics.drawRect(0, 0, target.width, target.height); addChild(msk); msk.x = targetCopy.x - targetCopy.width / 2; msk.y = targetCopy.y - targetCopy.height / 2; } mirror(cl, "0xFFFFFF");por:
Código :
function mirror(target:MovieClip, maskColor:String):void { /*Este código copia el MovieClip al que queremos aplicar el reflejo y lo posiciona bajo el y lo invierte*/ var targetClass:Class = Object(target).constructor; var targetCopy:MovieClip = new targetClass(); targetCopy.y = target.y target.height; targetCopy.x = target.x; targetCopy.rotation = 180; targetCopy.width = target.width; targetCopy.height = target.height; targetCopy.scaleX = -1; addChild(targetCopy); /*Este código construye un Gradient que será aplicado a la copia del MovieClip para que simule el reflejo*/ var msk:MovieClip = new MovieClip(); var fillType:String = GradientType.LINEAR; var colors:Array = [maskColor, maskColor]; var alphas:Array = [0, 1]; var ratios:Array = [0, 255]; var matrix:Matrix = new Matrix(); matrix.createGradientBox(target.width / 2, target.height / 2, Math.PI / 2, 0, 0); var spreadMethod:String = SpreadMethod.PAD; msk.graphics.beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod); msk.graphics.drawRect(0, 0, target.width, target.height); addChild(msk); msk.x = targetCopy.x - targetCopy.width / 2; msk.y = targetCopy.y - targetCopy.height / 2; } mirror(cl, "0xFFFFFF");Por Betelgeus el 27 de Septiembre de 2007
Por Sebastian Garcia el 27 de Septiembre de 2007
"Si el Gradient creado por Actionscript no te convence puedes crear uno personalizado, exportarlo para actionscript y llamarlo desde la función."
como lo exporto para que me quede el codigo AS3.
Gracias
Para un efecto de espejo en AS2, había puesto un ejemplo como respuesta a una pregunta de Dientuki aquí:
http://www.cristalab.com/foros/t22148-150.html
El sesgo se puede conseguir modificando la matrix M.
El ajuste del gradiente es similar en ambos casos.
Por willow001 el 28 de Septiembre de 2007
En la linea donde pone
Código :
me imagino que no habria desayunado el personal y se comio un "+", deberia ser
Código :
Saludos y gracias por el post.
Por Señor Oz el 01 de Octubre de 2007
Bueno, ya que estamos en esas, jaja, carlilloz, si pudieras explicar como hacer ese fantástico efecto del que te hablé, terminaría de amarte,
Pregunta: Sé que tu ejemplo es para AS3, los botones que tengo los desarrolle con un ejemplo magnífico también de esta pagina, pero están en AS2, ¿no funcionará tu ejemplo si teniendo yo flash CS3 seleccioné para crear esos botones un documento de AS2?
Nuevamente gracias por la respuesta.
Por Zona el 02 de Octubre de 2007
[BOFH] SWF RETIRADO POR USO INDISCRIMINADO DE PROCESADOR. El autor será prontamente latigado por ello. [/BOFH]
Usé un efecto Strong.easeOut, dentro de un ENTER_FRAME que ajustaba el tamaño del reflejo.
Ese ejemplo sólo "funciona", pero no es recomendable hacerlo, ya mostraré una versión mejorada.
Usa un Timer. O usando Tween ni siquiera tienes por qué usar un Timer, usa eventos de la clase Tween.
Freddie :
Usa un Timer. O usando Tween ni siquiera tienes por qué usar un Timer, usa eventos de la clase Tween.
Ese ejemplo sólo "funciona"
Sólo era una prueba rápida.
Carloz.Yanez :
Por nucli el 10 de Octubre de 2007
1067: Implicit coercion of a value of type Class to an unrelated type flash.display:MovieClip.
Por Lord_Kote el 19 de Noviembre de 2007
Enter_frame > Timer > Tween, lo he entendido bien?
y otra cosa, cómo se puede comparar el uso del procesador? me refiero a si hay algo asi como visor de ancho de banda, pero para uso cpu... si se queda colgado media hora esta claro que no es "recomendable" pero me refiero a medir diferencias mas pequeñas.
Gracias.
Por suso el 16 de Diciembre de 2007
Por leo el 24 de Diciembre de 2007
http://rapidshare.com/files/78795322/Untitled-1.fla
Por leo el 24 de Diciembre de 2007
saludos Leotaku
Por Skatos el 24 de Diciembre de 2007
Clase Reflect de PixelFumes
Por leo el 24 de Diciembre de 2007
1046: Type was not found or was not a compile-time constant: box_mc.
Por Skatos el 29 de Diciembre de 2007
Por EnRiQuE el 18 de Febrero de 2008
Por Marcelo el 02 de Marzo de 2008
Hay alguna forma de hacer esto con Actionscript 2.0?
Por Juan Felipe el 05 de Noviembre de 2008
Esto ya es posible con un codigo en ActionScript para el control de Wii. Pero no he podido encontrar el codigo en actionscript para hacerlo con un control de Play!
Espero respuesta en este foro o sino a mi mail :juanfe88_5@hotmail.com
Por sickboysb el 28 de Julio de 2009
Por ambitus el 25 de Octubre de 2009
Tal vez esto un principiante que no tiene ni puta idea, de AS no lo sabe, pero tal vez sepa duplicar una capa, voltearla verticalemte y borrar con una goma tipo soft brush y listo .
arrastra la imagen al fla. y ya lo tiene macho .