Comunidad de diseño web y desarrollo en internet online

Se podrá optimizar este código?

Citar            
MensajeEscrito el 13 Jun 2006 10:49 pm
Hola,

Tengo el siguiente código y algo similar he tenido que utilizar en repetidas ocasiones. Me preguntaba si se puede optimizar. Quizá con un bucle for pero honestamente no se como hacerlo.

Lo explico. De alguna manera siempre voy a tener en el root una variable (que corresponde a una imágen) con un valor de img1 a img6.

El siguiente código, que es parte de las acciones de un botón, tomará la variable, la comparará y dependiendo del valor hará tal cosa.

Código :

btn1.onRelease = function() {
   if (imgToShow == img1) {
      _root.i = 1;
   } else if (imgToShow == img2) {
      _root.i = 2;
   } else if (imgToShow == img3) {
      _root.i = 3;
   } else if (imgToShow == img4) {
      _root.i = 4;
   } else if (imgToShow == img5) {
      _root.i = 5;
   } else if (imgToShow == img6) {
      _root.i = 6;
   }
};


Si alguien me pudira dar una pista. Por el momento sigo leyendo acerca del bucle for

Muchas gracias.

Saludos.

Por pharpbx

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Jun 2006 06:58 am
las sentencias "else if" son equivalentes a un switch
por ejemplos

switch(imgToShow) {

case img1:
_root.i = 1;
break;

case img2:
_root.i = 2;
break;
};

Aún así todo tu código es muy similar podríamos reducirlo a :
btn1.onRelease = function() {
_root.i = Number(imgToShow.toString().substr(-1,1));
};

A ver, expliquemos, Number(expr) convertirá en número la "expr"

imgToShow.toString() no sé que és imgToShow, si es un número tenemos suerte, se puede convertir a string con toString, si es un string no hace falta, y si es una objeto :S:S:S no sirve, el código no funcionaría

substr(-1,1); *CREO* que esto debería de coger la cadena formada por el último elemento (-1) y de longitud 1 (1)

Almenos es una indicación

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

konqueror
Citar            
MensajeEscrito el 14 Jun 2006 02:46 pm

Código :

Yo soy cool porque uso las etiquetas de codigo XD

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 14 Jun 2006 03:47 pm
jorgelig....

Ten cuidado...
Dicen por ahi que un Conejo Ninja ebrio mata a los sarcasticos...

<Camuss mira desde las sombras... se aleja un poco... y se va corriendo>


:P Error de Tipeo...

Por Camuss

498 de clabLevel

1 tutorial
1 articulo

Genero:Masculino  



Ultima edición por Camuss el 14 Jun 2006 09:01 pm, editado 1 vez

Lima City - Perú

firefox
Citar            
MensajeEscrito el 14 Jun 2006 04:52 pm

Camuss escribió:

JorgeLib....

Ten cuidado...
Dicen por ahi que un Conejo Ninja ebrio mata a los sarcasticos...

<Camuss mira desde las sombras... se aleja un poco... y se va corriendo>
:roll: si JorgeLib, ten cuidado............

menos mal que es a jorgelib y no a mi ^^

*Jorgelig se retira para no secuestrar este tema :D

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 14 Jun 2006 05:33 pm
ICEM4N: gracias por la ayuda.

tomaré en cuenta tu comentario acerca de la sentencia switch, aunque en este caso creo que no es lo que me conviene. en el ejemplo puse la acción del código hasta la variable i=6 sin embargo en la práctica (y en otras ocasiones) tengo que hacer hasta cincuenta comparaciones o más, y es por eso que quiero optimizar el código.

imgToShow es una variable la cual tiene asignado un número de imágen, de tal manera que cuando hago esto:

Código :

trace(imgToShow);

aparece esto en el output:

Código :

_level0.img1

o

Código :

_level0.img2, _level0.img3, 

etc, dependiendo del botón cliqueado.

Ahora mismo estoy haciendo pruebas basandome en tu ayuda.

Aviso como salen.

Gracias nuevamente.

Saludos.

:)

Por pharpbx

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Jun 2006 06:06 pm
arrgghh eso son movieClips entonces prueba con algo como imgToShow._name en vez de imgToShow

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 17 Jun 2006 04:23 am
ICEM4N:

gracias por la ayuda. Me dieron esta solución con un bucle for:

Código :

btn1.onRelease = function() {
   for (var j=1;j<=6;j++){
          if (imgToShow == _root["img"+j]){
                _root.i=j
                break
           }
    }
} 


Funciona. y he simplificado el código tal como lo pensaba.

Saludos. :D

Por pharpbx

15 de clabLevel



Genero:Masculino  

firefox

 

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