Flash - Problema "goto"

 
Vista:

Problema "goto"

Publicado por Lorena (1 intervención) el 11/03/2007 22:59:30
Hola:
Estoy ejecutando este código en player 5

function resultado() {
if (total>1<7) {
gotoAndStop("Bajo");
if (total>8<12) {
gotoAndStop("Medio");
if (total>13<18) {
gotoAndStop("Alto");
if (total>19<25) {
gotoAndStop("MuyAlto");
}
}
}
}
}
Pero siempre va a "MuyAlto", alguién me puede decir porque ocurre esto? gracias.

Lorena
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema

Publicado por Isidoro (38 intervenciones) el 12/03/2007 10:23:58
Hola,
la verdad es que este script que has posteado tiene varios errores:
-En primer lugar la forma en que pones las condiciones no es correcta.
-En segundo lugar, has anidado todos los if, de modo que el programa comprueba el primer if, y sólo si se cumple la primera condición seguirá comprobando las demás condiciones.
-En tercer lugar, me imagino que con (total>1<7) quieres decir que 1<total<7, con lo cual, si total es un número entero sólo se cumplirá esta condición si total=2 ... total=6; pero la siguiente condición es 8<total<12 , que sólo se cumple si total=9 ... total=11.
De este modo no incluyes los casos en los que total=7 ni total=8. La forma correcta para abarcar todas las posibilidades sería:
1<total<=7
7<total<=12
12<total<=18
18<total<=25
-Y para finalizar, aunque esto ya es una cuestión de optimización, cuando uses varios if es mejor que utilizes else if para concatenarlos. Si no usas else if, aunque ya se haya cumplido la primera condición el programa seguirá comprobando los siguientes if que se encuentre, lo cual es una pérdida de tiempo.
Usando else if, una vez que se encuentra con un if que cumple la condición ya no se molesta en comprobar los demás, y ganarás en velocidad.
Bueno, y después de esta parrafada, que creo que ni siquiera te va a interesar aquí te dejo una de las formas en que se puede escribir el script de forma correcta:

function resultado() {
if (total>1 and total<=7) {
gotoAndStop("Bajo");
} else if (total<=12) {
gotoAndStop("Medio");
} else if (total<=18) {
gotoAndStop("Alto");
} else if (total<=25) {
gotoAndStop("MuyAlto");
}
};

Espero que te sirva de algo. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar