Comunidad de diseño web y desarrollo en internet online

cambiar a blanco y negro

Citar            
MensajeEscrito el 16 Feb 2008 05:11 pm
hola a todos , tengo una imagen de fondo y necesito que al hacer click en un boton cambiarla a blanco y negro es posible hacer esto con actionscript ??? o tendria que tener 2 imagnes una en colores y otra en blanco y negro

saludos...

Por elier_rp

56 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 16 Feb 2008 11:11 pm
este es mi código:

Código :

n=0; velo = 2.5;
mc.onEnterFrame = function(){
   n += velo;
   a = 1 - .007 * n; b = 1 - .004 * n; c = 1 - .0089 * n;
   d = .003 * n; e = .006 * n; f = .0011 * n
 this.filters =[new flash.filters.ColorMatrixFilter(
   [a, e, f, 0, 0, d, b, f, 0, 0, d, e, c, 0, 0, 0, 0, 0, 1, 0])];
 if (n >= 100)  delete this.onEnterFrame;
//yoyo: cambiar la anterior por:
//if (n >= 100 || n<=0) { velo=-velo;}  
}


este el ejemplo:

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 17 Feb 2008 04:34 am
ok todo , gracias me funciona de maravilla , sabes donde puedo encontrar alguna explicacion detallada de como funciona esto

saludos...

Por elier_rp

56 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Feb 2008 09:27 am
Lo compuse de esta manera:

Es una resolución de esta matriz:

a, e, f, 0, 0
d, b, f, 0, 0
d, e, c, 0, 0
0, 0, 0, 1, 0


cuyos valores entregan:

salidaRoja = a * rojos + e * verdes + f * azules
salidaVerde = d * rojos + b * verdes + f * azules
salidaAzul = d * rojos + e *verdes + c * azules
salidaAlfa = 1

Sabiendo que las 3 salidas han de valer lo mismo (grises) para cada entrada de color
se pueden componer varias soluciones. La cuarta fila corresponde a alfa y la dejamos en valor 1.

Determine una de ellas :

a= 0.3 ; b=0.4 ; c= .11; una diagonal util que obliga el resto de valores complementarios a 1:
d = 1-a = 0.7 ; e = 1-b = 0.6 ; f = 1-c = .11;
Donde d, e y f son variaciones respectivas de a, b y c.
para ajustarlos en 100 pasos ya que a , b y c son decrecientes d, e y f son crecientes

a = 1 - .007 * n
b = 1 - .004 * n
c = 1 - .0089 * n
d = .003 * n
e = .006 * n
f = .0011 * n

Y ya está!
Si queremos pasarlo a gris simplemente ( sin transición) le aplicamos el filtro con n=100,
es decir, usando simplemente esta instrucción convertimos un mc cualquiera a gama de grises:

Código :

mc.filters =[new flash.filters.ColorMatrixFilter(
   [0.3,0.59,0.11,0,0,0.3,0.59,0.11,0,0,0.3,0.59,0.11,0,0,0,0,0,1,0])];


Con la matriz totalmente simetrica sería:

Código :

mc.filters =[new flash.filters.ColorMatrixFilter(
[.333,.666,.111,0,0,.333,.666,.111,0,0,.333,.666,.111,0,0,0,0,0,1,0])];   


que vista así:

[3/9, 6/9, 1/9, 0, 0,
3/9, 6/9, 1/9, 0, 0,
3/9, 6/9, 1/9, 0, 0,
0, 0, 0, 1, 0]


Ahora se comprende mucho mejor.

Las pequeñas variaciones de esos valores que yo introduje son para aumentar el contraste. Pueden obviarse y quedaría una código más simple, -si cabe- usando solo una variable de 1/9 en lugar de seis si observamos la matriz anterior.





Para más aclaración consulta sobre resolución de matrices y en la ayuda de Flash sobre ese filtro.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 04 Mar 2009 04:57 pm
Wuuhuuuuhuuhuuu!!!! :D :D:D:D:D:D:D:D:D:D:D

por fin entendi tu codigo, la verdad esta muy sencillo pero mi cabeza hueca tardo todo el dia en comprenderlo jajajajjaja

Muchas gracias, eres un genio U_U

Por Imer

38 de clabLevel



 

Cd. Obregón Sonora

firefox
Citar            
MensajeEscrito el 04 Mar 2009 06:15 pm
Para terminar con el tema;
Necesitaba hacer varios iconos que al situarse encima de uno de ellos los demas pasaran a b/n (si si si... ya lo han visto antes en XP :? ) y en rollOut ps se colorearan todos de nuevo. Asi quedo el codigo:

Primero hacen varias peliculas, una para cada imagen, despues entramos a cada mc y lo volvemos a convertir en simbolo, tipo movie clip, nombre de instancia mc, agregamos 3 frames y ponemos en otra capa el siguiente codigo;

Primer frame:

Código :

stop();


Segundo frame:

Código :

stop();
n = 0;
velo = 15; //lo utilizo a 16fps, asi que tuve que meterle mas velocidad para que al dar rollOut no se vea golpeado el movimiento :D
this.onEnterFrame = function() {
   n += velo;
   a = 1-.0
07*n;
   b = 1-.004*n;
   c = 1-.0089*n;
   d = .003*n;
   e = .006*n;
   f = .0011*n;
   mc.filters = [new flash.filters.ColorMatrixFilter([a, e, f, 0, 0,
                                          d, b, f, 0, 0,
                                          d, e, c, 0, 0,
                                          0, 0, 0, 1, 0])];
   if (n>=100) {
      delete this.onEnterFrame;
   } 
};


Tercer frame:

Código :

stop();
n = 100;
velo = -15;
this.onEnterFrame = function() {
   n += velo;
   a = 1-.007*n;
   b = 1-.004*n;
   c = 1-.0089*n;
   d = .003*n;
   e = .006*n;
   f = .0011*n;
   mc.filters = [new flash.filters.ColorMatrixFilter([a, e, f, 0, 0,
                                          d, b, f, 0, 0,
                                          d, e, c, 0, 0,
                                          0, 0, 0, 1, 0])];
   if (n<=0) {
      delete this.onEnterFrame;
   }
};


Y wala! Solo hay que controlarlo con otro boton, por ejemplo:

Código :

m1.onRollOver = function() {
   m2.gotoAndStop(2);
}
m1.onRollOver = function() {
   m2.gotoAndStop(3);
}


Fin, espero que les sea util como a mi me ayudo ^^

Por Imer

38 de clabLevel



 

Cd. Obregón Sonora

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.