Cristalab

                 ¿Quieres registrarte?

Efecto cristal en imagenes con BitmapData en Flash 8

Por: Teseo
24 de Enero del 2007
1401 de clabLevel
Otros artículos de Teseo
26,858 visitas

El cristal es un efecto de Bevel básicamente. Con este efecto lograremos que una imagen parezca hecha de vidrio o cristal. De modo que las imágenes detrás de ella se reflejen tal como lo harían en un vaso con la forma de nuestra imagen base. El truco esta en ajustar el threshold de la imagen que convertimos en "cristal". Se necesitan solamente 2 imágenes, el fondo y y el móvil con vinculación desde la biblioteca como "imagen1" e "imagen2".

Código Cristal



Da click sobre la imagen y mueve el mouse.

Coloca este código en el primer keyframe.

Código :

import flash.geom.*;
import flash.filters.*;
import flash.display.*;
img1 = BitmapData.loadBitmap("imagen1");
img2 = BitmapData.loadBitmap("imagen2");
createEmptyMovieClip("efecto",0);
sal = img2.clone();
efecto.attachBitmap(sal,0);
w = img1.width;
h = img1.height;
c=0x8080;
lim = img1.rectangle;
P0 = new Point();
Nm = new Matrix();
img1.threshold(img1,lim,P0,">",0xfae0e0,0,0xffffff);
BF = new BitmapData(w,h,false,c); xy = img1.clone();
xx = new BitmapData(w,h,true,c);yy = new BitmapData(w,h,true,c);
xy.colorTransform(lim,new ColorTransform(0,0,0,1,0,64,64,0));
xx.applyFilter(xy,lim,P0,new BevelFilter(4,45,0,0,0,1,4,4,1,4));
yy.applyFilter(xy,lim,P0,new BevelFilter(4,225,0,0,0,1,4,4,1,4));
BF.draw(xx);
BF.draw(yy,Nm,null,"add");
xx.dispose();
yy.dispose();
xy.dispose();
Mouse.hide();
dMap = new DisplacementMapFilter(BF,P0,2,2,-50,-50,"clamp");
CT = new ColorTransform(1,1,1,.4,0,0,0,0);
onMouseMove = function(){
   Pt = new Point(_xmouse -w/2,_ymouse - h/2);
   dMap.mapPoint = Pt;
   Nm.tx = Pt.x;
   Nm.ty = Pt.y; 
   sal.copyPixels(img2,img2.rectangle,P0);
   sal.applyFilter(sal,img2.rectangle,P0,dMap);
   sal.draw(img1,Nm,CT,"multiply");
}
onMouseMove();


img1.threshold(img1,lim,P0,">",0xfae0e0,0,0xffffff);
Si es un PNG con transparencia y preparado anteriormente no necesitará esta línea o se puede igualar a transparente. Si es otro tipo de imagen, habrá que tantear la mejor solución en el valor del threshold.

Para más información del uso de estos efectos, puedes ver otros:


Artículos Relacionados


Etiquetas actionscript

Comentarios | Enviar un comentario
pes no me rula hermano que hago? no me rula ayudame!!!!
Por: confusion_blog
Lo más probable es que realmente no vinculases la imagen.
Colocar u MC, gráfico o botón en el Escenario y darle nombre de instancia es "instanciar", no es "vincular para attach".
Si es eso, sigue estas instrucciones:
1) En la biblioteca pones una imagen llamada digamos "paisaje".
2) Pinchas con ratón derecho sobre su icono en la biblioteca.
3) Pinchas en vinculación en el menú que aparece.
4) En la ventana que sigue: Propiedades de vinculación marcas Exportar para ActionScript , marcará también Exportar en primer fotograma, déjalo marcado. En identificador pon imagen (ese es el nombre que buscará el script para cargarlo en attach). Deja la entrada de Clase AS2 en blanco. pulsa Aceptar. Si todo ha ido bien, en las columnas de la biblioteca verás: nombre, tipo, nº de usos, y en vinculación la palabra imagen.

Ahora debería de funcionar, tendrás que ajustar a tu gusto y necesidad los parámetros del ejemplo.
Por: Teseo
las imagenes deben tener algun formato en especial? he importado a la biblioteca varias imagenes pero no me funciona he intentado varios dias
Por: mago
No , las imágenes pueden ser de cualquier formato.
Tienes que considerar que la imagen a "cristalizar" es la imagen1 y el fondo la imagen2.
No solo hay que importarlas a la biblioteca, hay que vincularlas para actionscript como he indicado antes.
Y corregir el valor del threshold si fuera necesario como también indico anteriormente.
No funciona en Flash anterior al 8.
Por:
hola buen dia soy algo novato del AS, me he encontrado con las siguientes clases:
import flash.geom.*;
import flash.filters.*;
import flash.display.*;

bueno no se si sean clases o que onda, por ejemplo no me salen los trucos del 360, ni del agua, no entendi bien como esta el asunto, bueno espero me puedan ayudar y si es posible me recomienden algunos tutos, o foros que pueda ver o seguir para entender mejor los AS que manejan gracias por su atencion.

joslui :D
Por: josluigtz
no se sipueda tener a new en el cristal me podrian ayudar?
Por: sergio _blog
no se mucho de flash pero quiero que mi imagen se ajuste al esenario de flash, siempre queda pequeña la imagen :( ¿que hago?
Por: Glenda España_blog
Teseo muchisimas gracias pq la verdad q me habia vuelto loca tratando de vincular la imagen y no tenia la menor idea!!!!
Soy novata en esto asi q todo lo q leo acame sirve un monton!!!!!
Otra vez gracias!!!
Por: Marina_blog
hay alguna forma de implementar eso en swishmax 2???
porque las clases

"import flash.geom.*;
import flash.filters.*;
import flash.display.*;"

no las acepta. desde ya gracias
Por: chuliano-blog
no funciona esto buuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
Por: karla -blog
Si funciona Karla, Intenta explicar donde te atascas.
Por: Teseo
karla talvez estes usando otra version por que ste efecto fundiona altiro despues de colocar el codigo y vincular
Por: janodigital
woaaaa... como hay gente ignorante que quiere todo hecho. Chicos, el código funciona y está genial.

Google no muerde, busquen como vincular una imagen y ya, se acabaron los problemas.

chuliano-blog: Las clases de Flash no se pueden utilizar en Swish.
Por: Misael-blog
SI FUNCIONA GRASIAS PERO EL EFECTO QUE NECESITO ES DE LEVANTARCE EL BOTON CUANDO LE PASO EL MOUSE POR ENCIMA GRASIAS POR EL DATO ANTERIOR
Por: benitez
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.