Foros del Web » Creando para Internet » Flash y Actionscript »

Porque este IF me da falso???

Estas en el tema de Porque este IF me da falso??? en el foro de Flash y Actionscript en Foros del Web. Cargo un txt, con la siguiente info: banner_a_mostrar=1& el txt lo carga correctamente, luego en un frame, me fijo, si banner_a_mostrar vale 1, que haga ...
  #1 (permalink)  
Antiguo 03/09/2004, 14:18
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
Pregunta Porque este IF me da falso???

Cargo un txt, con la siguiente info:

banner_a_mostrar=1&

el txt lo carga correctamente, luego en un frame, me fijo, si banner_a_mostrar vale 1, que haga

tal cosa, sino, tal otra.... pero siempre me da falso.. me imagino que debe ser una cuestion de

sintaxis, prove con == a "1", "'1'" , '"1"', y con 1 pero todos me dan falso...

if (banner_a_mostrar == "1")

Muchas Gracias.
YO
  #2 (permalink)  
Antiguo 03/09/2004, 14:59
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
debe funcionar com banner == 1

como cargas la variable???

Saludos!!
  #3 (permalink)  
Antiguo 03/09/2004, 15:15
 
Fecha de Ingreso: agosto-2004
Mensajes: 67
Antigüedad: 19 años, 8 meses
Puntos: 0
Que tal, lo que te debe estar pasando es que no estas viendo que realmente se haya cargado la variable del archivo antes de compararla, ya que si no llego a cargarse y haces el if obviamente te va a dar falso.
Para esto el codigo seria asi:
Código:
//en el primer frame cargas las variables del archivo
stop();
variables = new loadvars();
variables.load("pepe.txt");
variables.onLoad = function(cargo) {
	play();
}


 //en el segundo frame pongo el if (mi variable en pepe.txt es banner)
if (variables.banner == 1){
	//sentencias verd
}else{
	//sentencias false
}
con el codigo anterior lo que haces es verificar que se hayan cargado las variables, o en este caso la variable banner antes de compararla con un valor. Espero que esto te ayude. Hasta luego.
  #4 (permalink)  
Antiguo 03/09/2004, 20:59
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
Antes que nada, muchas gracias por responder..

Este es el codigo que tengo en el primer frame:

Código:
loadVariablesNum("info_ban.txt", 0);

if (banner_a_mostrar == 1) {
	loadMovie("1.swf", "aa");
} else {
	loadMovie("2.swf", "aa");
}
y este es el contenido del archivo "info_ban.txt"

Código:
banner_a_mostrar=1&
Asi como lo muestro, no funciona... inserte un text_box para ver si la variable banner_a_mostrar

realmente se cargaba, y si, se carga, me muestra un 1 ... pero cuando hago el if, if

(banner_a_mostrar == 1) me da falso... por si sirve, uso flash mx

Duende1422, no se si entendi bien lo que me dijiste, lo que hice fue poner en el primer frame, el

loadVariablesNum("info_ban.txt", 0); y en el siguiente el if, pero tampoco me funciono.

Alguna idea???
Muchas gracias..
YO
  #5 (permalink)  
Antiguo 04/09/2004, 11:37
Nab
 
Fecha de Ingreso: junio-2004
Mensajes: 210
Antigüedad: 19 años, 10 meses
Puntos: 0
Yo cargaria las variables como dijo Duende, mas o menos lo tuyo quedaria asi:

//loadVariablesNum("info_ban.txt", 0); Esto lo quitamos

carga=new LoadVars();
carga.load("info_ban.txt");
carga.onLoad=function(){

if (carga.banner_a_mostrar == 1) {
loadMovie("1.swf", "aa");
} else {
loadMovie("2.swf", "aa");
}
}

Así lo haria yo.

Espero te sirva
  #6 (permalink)  
Antiguo 04/09/2004, 14:50
Avatar de Abelius  
Fecha de Ingreso: mayo-2004
Ubicación: Miami, FL, USA
Mensajes: 248
Antigüedad: 19 años, 11 meses
Puntos: 0
Ese debe de funcionar... :)
__________________
Cordialmente,
Abel K
Miami, FL, USA
World Kit
  #7 (permalink)  
Antiguo 04/09/2004, 14:53
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
Gracias!!!

Funciona perfecto!

Ahora, si no es mucha molestia, quien me explica esto de " carga=new LoadVars(); " ?? Hace cosa

de un año hacia alguna que otra cosita en Action Script, pero por lo que veo, ahora estoy

completamente desactualizado...

Quise pasarlo a algo mas ordenado, con un switch, pero no lo puede hacer funcionar, puse:

Código:
carga = new LoadVars();
carga.load("info_ban.txt");
carga.onLoad = function() {
	switch (carga.banner_a_mostrar) {
	case 1 :
		loadMovie("1.swf", "aa");
		break;
	case 2 :
		loadMovie("2.swf", "aa");
		break;
	case 3 :
		loadMovie("3.swf", "aa");
		break;
	default :
		loadMovie("1.swf", "aa");
		break;
	}
}
pero por mas que el archivo "info_ban.txt" indique que hay que cargar el 2.swf no me hace caso, y

carga siempre el default...

Estoy usando bien el switch??

Saludos y muuuuchas gracias !!!
YO
  #8 (permalink)  
Antiguo 04/09/2004, 15:19
Avatar de Abelius  
Fecha de Ingreso: mayo-2004
Ubicación: Miami, FL, USA
Mensajes: 248
Antigüedad: 19 años, 11 meses
Puntos: 0
Prueba con el switch usando

eval(carga.banner_a_mostrar)

o sino

Num(carga.banner_a_mostrar)

Pero el switch lo estas usando correctamente, si... :)
__________________
Cordialmente,
Abel K
Miami, FL, USA
World Kit
  #9 (permalink)  
Antiguo 04/09/2004, 20:17
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
mmm, nop, prove con los dos, eval y Num, y sigue sin funcionar..
  #10 (permalink)  
Antiguo 05/09/2004, 00:48
 
Fecha de Ingreso: agosto-2004
Mensajes: 67
Antigüedad: 19 años, 8 meses
Puntos: 0
Que tal, con respecto a que es "carga=new LoadVars();", esto significa que estas creando un objeto loadvars, este objeto sirve para cargar variables. Osea, cuando pones "carga.load("info_ban.txt");" estas haciendo que dentro del objeto carga se graben las variables que estan en el archivo info_ban.txt, y al poner "carga.onload=function()" lo que estas haciendo es verificando que se hayan cargado las variables dentro del objeto, y que recien despues que se cargaron realice lo que sigue, en este caso el if o el switch. Espero que esto te haya aclarado un poco lo que hace un objeto loadvars con sus respectivas funciones. Lo del switch ahora no te lo puedo contestar porque no tengo el flash en este momento, apenas pueda te lo digo. Espero que te haya servido, cualquier otra consulta avisame.
Hasta luego.

Última edición por duende1422; 05/09/2004 a las 00:49
  #11 (permalink)  
Antiguo 05/09/2004, 17:37
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
Mil gracias, se entendio perfecto...

Bueno, sigo a la espera, de que algun iluminado encuentre el error en el switch.

Saludos!!!
YO
  #12 (permalink)  
Antiguo 05/09/2004, 22:16
 
Fecha de Ingreso: agosto-2004
Mensajes: 67
Antigüedad: 19 años, 8 meses
Puntos: 0
Que tal, voy a decirte como tenes que hacer el swicht para que te funcione, el codigo es el siguiente:
Código:
switch (carga.banner_a_mostrar.substr(0,1)) {
	case "1" :
		loadMovie("1.swf", "aa");
		break;
	case "2" :
		loadMovie("2.swf", "aa");
		break;
	case "3" :
		loadMovie("3.swf", "aa");
		break;
	default :
		loadMovie("1.swf", "aa");
		break;
	}
}
Fijate asi tendria que funcionar el switch. Paso a explicarte masomenos el porque de que asi funcione y antes no. El switch utiliza la igualdad estricta (===) y no como habiamos hecho en el if la igualdad (==), entonces el problema parte que al hacer case 1, estamos diciendo que sea igual al numero entero 1 en cambio en la igualdad (==) le decimos que sea igual al valor 1, y la variable que tomamos del archivo no es un numero entero.
Lo que hago en el swicth que le agrego a la variable (substr(0,1)) es dejar un string de 1 solo caracter, el cual lo vamos a comparar con el caracter "1" o "2", etc.
No se si fui muy claro en la explicacion, es un poco engorroso el tema, espero haberte ayudado.
Hasta luego.
  #13 (permalink)  
Antiguo 06/09/2004, 07:34
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
Gracias Duende, si creo que entendi, aunque no sabia que existiera eso de la igualdad estricta. Ahora el que no entiende es mi flash, porque sigue sin funcionar !!!
  #14 (permalink)  
Antiguo 06/09/2004, 13:23
Nab
 
Fecha de Ingreso: junio-2004
Mensajes: 210
Antigüedad: 19 años, 10 meses
Puntos: 0
Ese switch deberia funcionar, sin problemas.

Lo de la igualdad estrica es así:

= asocia un valor a otro
== compara un valor con otro y devuelve true si son iguales

if(a=5) eso siempre dara true, porque lo que hace es darle a 'a' el valor '5', y siempre da true este tipo de asociacion

if(a==5) compara y devulve true si es 5 y si no false.

De todas maneras los switch funcionan con igualdades estricas siempre (tengo entendido) así que tu problema a lo mejor esta en el fichero del q lee. Prueba llendotte al txt y camibiando 1 por 2, aunq supongo ya lo abras exo.

Saludos, no se si te e solucionado algo
  #15 (permalink)  
Antiguo 06/09/2004, 20:25
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
Entonces tiene que ser un error bastante bobo, y apesar de esto, por mas que lo reviso una y otra vez, no lo encuentro... Aca subi el zip con los archivos (16 kb)... para que si alguien puede, lo mire...

Saludos!
YO
  #16 (permalink)  
Antiguo 06/09/2004, 20:39
Avatar de TortugaChat  
Fecha de Ingreso: julio-2004
Ubicación: Coatzacoalcos, Veracruz, México.
Mensajes: 150
Antigüedad: 19 años, 9 meses
Puntos: 0
En lugar de usar esto:

banner_a_mostrar= 2&


Usa esto:

banner_a_mostrar=2&

Nota que se ha eliminado el espacio antes del 2.


Saludos.
  #17 (permalink)  
Antiguo 07/09/2004, 07:30
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
Jajaja!!! era eso nomas!!!!! igual creo que me iba a pasar la vida entera antes de darme cuenta.... GRACIAS!!!! Muuuuuchas gracias a todos!!


Saludos!
YO
  #18 (permalink)  
Antiguo 07/09/2004, 12:45
 
Fecha de Ingreso: julio-2004
Mensajes: 114
Antigüedad: 19 años, 9 meses
Puntos: 0
mostrar swf

Cambiale el nombre a la variable del archivo de tecto y ponle "mostrar"

Aunque el código que tienes es parecido a este , borralo todo y copia este , para que el código sea nuevo , debe funcionarte yo lo probe con tu ejemplo , pero copie todo el código de nuevo y le cambie la variable y otros datos.


De todos modos coloque la función "trace()" con lo que me mandastes me mando "undefined" y cuando lo hice de nuevo me mado el valor del txt.

datos = new LoadVars();
datos.load("info_ban.txt");


datos.onLoad = function() {

trace(datos.mostrar));

switch (datos.mostrar) {
case "1" :
loadMovie("1.swf", "aa");
break;
case "2" :
loadMovie("2.swf", "aa");
break;
case "3" :
loadMovie("3.swf", "aa");
break;
default :
loadMovie("1.swf", "aa");
break;
}
};


Si deseas que temande un ejemplo postea tu email, claro si no te funciona
  #19 (permalink)  
Antiguo 07/09/2004, 14:43
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
Muchas Gracias "Dannym" por molestarte, al final, el problema estaba en lo que dijo "TortugaChat", que en el txt, decia:

Código:
 
banner_a_mostrar= 2&
y tenia que decir esto:

Código:
 
banner_a_mostrar=2&
(Habia un espacio de mas)...

Muuuchas gracias!!
Saludos, YO.
  #20 (permalink)  
Antiguo 07/09/2004, 18:11
 
Fecha de Ingreso: agosto-2004
Mensajes: 67
Antigüedad: 19 años, 8 meses
Puntos: 0
Perdon que desapareci, sino que estube ocupado, veo que ya solucionaste el problema, me alegro, cualquier otra duda ya sabes. Hasta luego
  #21 (permalink)  
Antiguo 08/09/2004, 08:18
Avatar de YO
YO
 
Fecha de Ingreso: junio-2001
Mensajes: 148
Antigüedad: 22 años, 10 meses
Puntos: 0
bien duende, gracias..!

Saludos!
YO.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:43.