Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/09/2007, 15:18
cpucpu
 
Fecha de Ingreso: febrero-2005
Ubicación: MEXICO
Mensajes: 455
Antigüedad: 19 años, 2 meses
Puntos: 5
funcion que ejecuta funcion, +arguments. AS2

Esta es el codigo de una funcion que ejecuta: a otra, y a los parametros de esta otra
Código:
var miFuncion:Function = function(miVariable:Number,miVariable2:Number):Void {
    trace("miVariable= "+miVariable);
    trace("miVariable2= "+miVariable2);
    };


var funcionQueEjecutaFuncion:Function = function(queFuncion:Function):Void{
    queFuncion(/*aqui no se como hacerle*/);
};

funcionQueEjecutaFuncion(miFuncion2,"x","y","z",99);
Si se fijan funcionQueEjecutaFuncion solo esta declarada para recibir un parametro (el de la funcion que va a ajecutar) por que no sabemos cuantos parametros ocupara la funcion que se mandara llamar(en este caso si lo sabemos, pero funcionQueEjecutaFuncion sera generica y debera ejecutar funciones sin importar si tienen o no parametros)...[hasta aqui todo bien]... y se basa en la clase arguments de AS2 para deteminar los parametros totales pasados a la funcion y su longitud, etc. NOTA: arguments genera una array con cada parametro en una posicion.

digamos que funcionQueEjecutaFuncion es una funcon que no debe saber cuantos parametros le van a pasar, pero (con ayuda arguments) lo debera determinar y mandarlos dentro de quefuncion(); el problema es que no se como hacerlo, puesto que si hago:
Código:
trace(arguments); //output= [type Function],x,y,z,99
eso esta bien....pero si hago:
Código:
queFuncion(arguments);
envia la matriz completa(como un solo valor) y no se como hacerle para que envie cada posicion como un valor...de acuerdo al numero de posiciones que arguments detecte (y sin perder el tipo de dato que cada posicion tenga)

se que puedo hacer esto:
Código:
queFuncion(arguments[0], arguents[1]);
...pero estaria limitando a funcionQueEjecutaFuncion a mandar solo dos parametros...la logica que quiero es que se manden los parametros que arguments detecte (sin importar si son 0 o 100)

Lo que se me ha ocurrido hasta ahora es tal vez apoyarme en un for y en argumetnts.length... pero no se me ha ourrido nada para meterlos dentro del queFuncion();

Alguna idea, gracias.

PD: no es la primera vez que se ha hecho esto, esto existe, por ejemplo, en la funcion SetTimeout(nombre de funcion, tiempo de retraso, parametros indefinidos que se le pasaran a la funcion separados por comas);
__________________