Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/09/2008, 06:32
Avatar de SinguerInc
SinguerInc
 
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 551
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Cronometrar una variable

hola, te cuento, AS3 es muy estricto en cuanto a syntax, y te acostumbras a escribir el código de forma estructurada, declarando las variables con su tipo y las funciones con el valor que devuelven.
Void en AS2 al final de el nombre de una función():Void quiere decir que la funcion no te devuelve nada, o sea, que dentro de ella se realiza una operación pero no genera ningun resultado. En la siguiente función en cambio realizo una suma y devuelvo un numero, entonces quedaría asi:

Código HTML:
function sumar(val1:Number, val2:Number):Number
{
return val1 + val2;
}
en cuanto a la función "cambiarNombreAnimal()"

Código HTML:
function cambiarNomberAnimal():Void
{
	var nombre:String = posiblesNombres[Math.floor(Math.random()*posiblesNombres.length)];
	setNombreAnimal(nombre);
	setTimeout(cambiarNomberAnimal, Math.floor(Math.random() * 5000));
}
te explico linea por linea:

1) var nombre:String = posiblesNombres[Math.floor(Math.random()*posiblesNombres.length)];

Lo que estoy haciendo es recuperar un valor a random dentro del array que contiene los nombres, o sea, cuando escribes Math.random() te devuelve un valor entre 0 y 1, despues lo multiplico por la cantidad de nombres que tenemos en nuestro array, que son 5, entones si Math.random() es igual a 0.5 el resultado de Math.random() * 5 será igual a 2.5, despues todo eso le aplicamos Math.floor(2.5) que redondea el numero, al final nos da "2", entonces quedaria -> posiblesNombres[2], que es igual a "elefante", porque las posiciones en los arrays comienzan desde 0 y no 1.

2) setNombreAnimal(nombre);

bueno, ahi lo que hago es llamar la función y pasarle el valor seleccionado, o sea "elefante"

3) setTimeout(cambiarNomberAnimal, Math.floor(Math.random() * 5000));

Para simular el cambio de variable lo que hago es llamar la misma funcion pero "dentro de X cantidad de tiempo", lo mismo, Math.random() * 5000 nos devuelve un numero entre 0 y 5000, en este caso serán milisegundos.

Saludos.
__________________
/blog.singuerinc.com