Me explico un poco mejor. La tarea de la function javascript es degradar de un color a otro, pero no hacer la media entre los dos, sino hacer el % de mezcla que yo le indique (pasoActual/pasosTotales), de esta manera poder pasar por ejemplo del rojo al azul en 10 pasos o en 100, llamando a la funcion respectivas veces. Todo lo que he intentado han salido chapuzas, y me estoy volviendo loco . Asi que pido un poco de ayuda, no digo que me lo construyan (aunque si alguien se atreve... ). Las funciones en que me fundamento las saque de estos foros, consisten en poder pasar de un valor #rrggbb en hexadecimales a un r,g,b en valores numericos de 0 a 255 para poder trabajar bien con ellos. Las funciones son:
Código PHP:
var _h0= "0123456789abcdef";
var _h = _h0.split("");
function rrggbb(r,g,b) {
r=_h[parseInt(r / 16)] + _h[r % 16];
g=_h[parseInt(g / 16)] + _h[g % 16];;
b=_h[parseInt(b / 16)] + _h[b % 16];;
return "#"+r+g+b;
}
function rgb(rrggbb) {
valor=0; colores=[rrggbb.substring(1,3),rrggbb.substring(3,5),rrggbb.substring(5,7)];
for(a=0;a<colores.length;a++) {
colores[a]=colores[a].split("");
colores[a]=(_h0.indexOf(colores[a][0])*16) + (_h0.indexOf(colores[a][1]));
}
return [ colores[0] , colores[1] , colores[2] ];
}
Código PHP:
function mezclarColores(col1,col2,paso,pasos) {
col1=rgb(col1); r1=col1[0]; g1=col1[1]; b1=col1[2];
col2=rgb(col2); r2=col2[0]; g2=col2[1]; b2=col2[2];
r= ((Math.max(r1,r2)-Math.min(r1,r2)) *paso/pasos ) +Math.min(r1,r2); r=parseInt(r);
g= ((Math.max(g1,g2)-Math.min(g1,g2)) *paso/pasos ) +Math.min(g1,g2); g=parseInt(g);
b= ((Math.max(b1,b2)-Math.min(b1,b2)) *paso/pasos ) +Math.min(b1,b2); b=parseInt(b);
return rrggbb(r,g,b);
}
Código PHP:
c1="#ffffff";
c2="#00ff00";
pasos=10;
for(bucle=0;bucle<=pasos;bucle++) {
colActual=mezclarColores(c1,c2,bucle,pasos);
document.write("<font color='"+colActual+"'>Mezclando en pulso "+bucle+". Actual="+colActual+"</font><br>");
}
Una sugerencia por favor..