Bueno, no s� si el asunto es suficientemente explicito, as� que lo expongo
aqu�.

Tengo este c�digo:

<code>

function calculaColores(){

 //////////////rojo
 if(_root.rojo<rojoF){
  rojoI++
  aplicaColor(rojoI,verdeI,azulI)
 }
 if(_root.rojo>rojoF){
  rojoI--
  aplicaColor(rojoI,verdeI,azulI)
 }
 /////////////verde
 if(_root.verde<verdeF){
  verdeI++
  aplicaColor(rojoI,verdeI,azulI)
 }
 if(_root.verde>verdeF){
  verdeI--
  aplicaColor(rojoI,verdeI,azulI)
 }
 //////////////azul
 if(_root.azul<azulF){
  azulI++
  aplicaColor(rojoI,verdeI,azulI)
 }
 if(_root.azul>azulF){
  azulI--
  aplicaColor(rojoI,verdeI,azulI)
 }
}

</code>

Quiero reducirlo a la m�nima expresi�n porque ha de hacer esta comprobaci�n
muchas veces, ya que para conseguir el efecto deseado (transici�n suave
entre colores) y teniendo en cuenta que los valores de un color van desde el
0 al 255 en RGB, mi pel�cula esta a 62 fps

Para ello me creo un array con tres string:

<code>
colores=new Array("rojo","verde","azul")
</code>

con la intenci�n de reducir las 6 comprovaciones a 2, de tal manera que
quedase algo como esto:

<code>
function calculaColores(){

 for(c=1; c<=colores.length; c++){
  if(_root.colores[c-1]<colores[c-1]+"F"){
   this[colores[c-1]+"I"]++
   aplicaColor(rojoI,verdeI,azulI)
  }

  if(_root.colores[c-1]>colores[c-1]+"F"){
   this[colores[c-1]+"I"]--
   aplicaColor(rojoI,verdeI,azulI)
  }
 }
}
</code>

Que no funciona, por supuesto.

Ya s� que el c�digo �ltimo que he escrito es como escribir "vaca" con "b",
pero no s� otra forma, aunque sab�a desde el principio que as� no es.

El problema es el siguiente, no s� como sacar un string del array (por
ejemplo, "rojo") y concatenarlo, unas veces con "_root." delante de "rojo",
otras veces con la letra "F" y otras con la letra "I" detras de "rojo", y
que eso lo interprete como variables.

Lo cierto es que tampoco s� si realmente merece la pena hacerlo y no ser�a
mejor dejar el script tal y como esta originalmente.

Todo esto es para el mismo men� para el que pregunt� los de los colores
hexadecimales, que la final no era necesario pues no lo usa, fue un error de
concepto mio.

En otro script anterior que esta en este mismo men�, consegu� reducir esto:

<code>
if(_root.colorImagen == "rojo"){
  rojoF = 102;
  verdeF = 0;
  azulF = 0;
  pintaLos();
}

if(_root.colorImagen == "azul"){
  rojoF = 0;
  verdeF = 0;
  azulF = 153;
  pintaLos();
}

if(_root.colorImagen == "verde"){
  rojoF = 0;
  verdeF = 102;
  azulF = 102;
  pintaLos();
}

if(_root.colorImagen == "naranja"){
  rojoF = 237;
  verdeF = 146;
  azulF = 0;
  pintaLos();
}

if(_root.colorImagen == "violeta"){
  rojoF = 153;
  verdeF = 0;
  azulF = 255;
  pintaLos();
}

if(_root.colorImagen == "bn"){
  rojoF = 0;
  verdeF = 0;
  azulF = 0;
 pintaLos();
}
</code>

a esto otro:

<code>

datos=new Array(["home","rojo", 102, 0, 0],["empleo","violeta", 153, 0,
255],["clientes","verde", 0, 102, 102],["cat�logo","naranja", 237, 146,
0],["contacto","bn", 0, 0, 0],["ver","azul", 0, 0, 153])


for(pos=0; pos<=cantidad; pos++){
 if(_root.colorImagen == datos[pos][1]){
  rojoF=datos[pos][2];
  verdeF=datos[pos][3];
  azulF=datos[pos][4];
 }
}
</code>
solo con meter los datos en un array y pienso que merece la pena.

Echarme un cable por favor.

Muchas gracias

Felipe Alonso


<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
-------------------------------->

Responder a