Comunidad de diseño web y desarrollo en internet online

Hacer un random o aleato con funciones

Citar            
MensajeEscrito el 18 Mar 2008 07:44 am
Hola,

Alguien sabe como hacer un random con diferentes funciónes?

- Crear una serie de funciónes (las que sea):

function reproduce1 (ir) {
_root.gotoAndPlay(2)
}
function reproduce2 (ir) {
_root.gotoAndPlay(6)
}
function reproduce3 (ir) {
_root.gotoAndPlay(7)
}

etc.

- Hacer un random de todas las funciones y cuando se cargue la página o en un evento (onLoad, onPress, etc.), que se ejecute una función de entre todas, cada vez una diferente. Supongo que será crear un array con todas las funciones. Alguna idea?

Gracias!

Por Eki

39 de clabLevel



 

2004

firefox
Citar            
MensajeEscrito el 18 Mar 2008 10:30 am
En realidad, lo que haces es un gotoAndStop a un punto aleatorio, algo así

function reproduce(){
gotoAndStop(ramdon(7))
}

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Mar 2008 11:07 am
El "gotoAndStop" lo he puesto como ejemplo, tal vez no ha sido el mejor jejej, cada funcion tiene una serie de ordenes dentro, imaginate que una de las funciónes es:

function ejecuta(todo){
_root.gotoAndPlay(2)
_root.mc = 30
_root.fondo._visible = false;
if (respuesta == "hola") {
trace("bien")
} else {
trace("mal")
}

Pues eso, imaginate 15 funciónes como estas, pero con contenido diferente, y el random tendría que hacer ejecutar una cada vez...

Gracias!

Por Eki

39 de clabLevel



 

2004

firefox
Citar            
MensajeEscrito el 18 Mar 2008 11:12 am

Código :

function doFunction(f){
f()
}

Le pasas como parámetro el nombre sin paréntesis de la función que quieres reprodcuir, por ejemplo:

Código :

doFunction(reproduce1)

Para hacerlo como tú quieres:

Código :

doFunction(["reproduce"+Math.random()*15])

Por mcapu

181 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Mar 2008 11:21 am
Está bien la idea, pero el string no evalúa a función, la llamada sería (siempre que la función esté declarada en la misma línea de tiempo):

this[f]()

Si quieres mejorarla, pasa el scope como segundo argumento y lo usas en vez del this

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Mar 2008 11:31 am
Cierto, lo he probado y no funciona con Strings. Lo he arreglado con esto:

Código :

array=new Array(funcionA, funcionB, funcionC, funcionD, funcionE);//etc., etc.
//Función aleatoria:
doFunction(array[Math.round(Math.random()*array.length)]);

Por mcapu

181 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Mar 2008 12:04 pm
Es una opción, lo que decía era:

function doFunction(f){
this[f]()
}

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Mar 2008 12:15 pm
Más cierto, en ese caso habría que introducirle Strings a doFunction. Siempre se aprende algo nuevo ;)

Por mcapu

181 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Mar 2008 12:48 pm
Y como quedaría todo el enunciado jeje? Muchas gracias por las respuestas, asi da gusto!

Por Eki

39 de clabLevel



 

2004

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.