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.