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

Cosa rara en ActionScript

Estas en el tema de Cosa rara en ActionScript en el foro de Flash y Actionscript en Foros del Web. Creo que ando un poco despistado hoy... pero es que no me explico porqué no funciona esto: Código: this.onRollOver = function() { var strength:Number = ...
  #1 (permalink)  
Antiguo 15/04/2006, 10:03
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 12 años
Puntos: 1
Cosa rara en ActionScript

Creo que ando un poco despistado hoy... pero es que no me explico porqué no funciona esto:


Código:
this.onRollOver = function() {
	var strength:Number = 0;
	var último_estado:Number = 0
	this.onEnterFrame = function() {
		trace (strength)
		if (strength < 2 && último_estado == 0) strength += .1
		//if (strength > 0 && último_estado == 2) strength -= .1
		if (strength == 0 || strength == 2) trace ("hola")
        }
}

strength acaba valiendo 2, o por lo menos eso me indica el 'trace (strength)', pero el otro trace, el 'trace ("hola")', NUNCA APARECE ¿Por qué? O estoy entendiendo mal el funcionamiento del or lógico (va a ser que no...) o hay algo aquí que no encaja... ayuda PLEASE
  #2 (permalink)  
Antiguo 15/04/2006, 11:15
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
jaja sí es algo raro

si haces la comparación así:
if (strength == 0 || strength > 2 ...

o así:
if (strength == 0 || Math.floor(strength) == 2 ...

o así:
if (strength == 0 || strength.toString() == 2 ....

o así:
if (strength == 0 || String(strength) == 2 ...

conclusión
que la varible es mayor que 2 y es una cadena
aunque
trace (strength);
y
typeOf(strength);

digan lo contrario

xD
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #3 (permalink)  
Antiguo 15/04/2006, 14:14
 
Fecha de Ingreso: diciembre-2003
Ubicación: Caracas
Mensajes: 81
Antigüedad: 14 años
Puntos: 0
Por lo que puedo ver en el codigo que pusistes, strength nunca va a ser igual a 2 porque lo que le sumas es .1 en vez de 1.
  #4 (permalink)  
Antiguo 15/04/2006, 14:53
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 12 años
Puntos: 1
Edumaca, el primer trace me dice que es dos... además de que si sumas 0.1 (.1 es igual que 0.1 por lo que tengo entendido...) sí que debe llegar a dos (además de que como te digo, lo dice el trace)

Luistar TIENES RAZÓN... no había probado eso de pasarlo a una cadena... joder... ¿no te parece algo muy muy extraño?

Bueno me adecuaré a lo que me ofreces... gracias
  #5 (permalink)  
Antiguo 15/04/2006, 15:37
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 12 años
Puntos: 1
Joer me parece que el error es bastante simple... ActionScript no trabaja NADA bien con decimales... me he puesto a probar cosas y me quedé bastante asombrado al probar este código...

Código:
var n:Number = 0
onEnterFrame = function (){
	n+=.1
	trace (n)
}
La verdad es que cuando lo pensé pensé (valga la redundancia) que encontraría el error que buscaba mucho más arriba.. que tardaría minutos... no, pruébalo y al segundo descubrirás el error... bastante triste, ¿no?
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 22:18.