Comunidad de diseño web y desarrollo en internet online

realize funcion tipo Timer de As3, en As2...

Citar            
MensajeEscrito el 09 Sep 2007 06:18 am
..pero tengo una consulta.
asi se ejecuta la funcion:
Timer(numeroDeEjecuciones,tiempoPorEjecucion);

las funciones a ejecutar se encuentran definidas dentro de Timer(la funcion), de esta manera:
if (CONDICION_PARA_QUE_SE_EJECUTE) {
//aqui se ejecuta la funcion deseada
nombreDeFuncion();
}
pero me gustaria establecer la(s) funcion(es) a ejecutar como parametro de Timer..pero no se me ocurre como...

algo asi:
Timer(numeroDeEjecuciones,tiempoPorEjecucion,nombreDeFuncion);

Se les ocurre algo? :)
Gracias.

Por cpucpu

82 de clabLevel



 

msie7
Citar            
MensajeEscrito el 09 Sep 2007 03:28 pm
Si el Timer es una función creada por ti, la solución te la has dado tú:

Código :

Timer(numeroDeEjecuciones,tiempoPorEjecucion, nombredelaFunción);


Si es una clase (también creada por ti), pues lo mismo, agregas el parámetro en el constructor.
Sería esclarecedor que dieras más datos sobre la función, o que postearas el código.
Nota: Para que sea más legible, coloca el código entre las etiquetas [*code] [*/code] (sin los asteriscos).

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 10 Sep 2007 05:20 am
Que tal, gracias por responder.
Asi es, es realizada por mi.

respecto a lo que mencionas
a solución te la has dado tú

pues en principio tal vez, eso es lo que quiero hacer, pero..no se me ocurre como programarlo.
No tengo mucha experiencia.

Código :

var x:Number=1;
//var depth=this.getNextHighestDepth();
depth=0;

var funcionRotar:Function = function(){
duplicateMovieClip(cuadro_mc,"nuevo_cuadro"+x,depth);

this["nuevo_cuadro"+x]._rotation = x*5;
x++;
depth++;
};

//  COMIENZA FUNCION TIMER ***
var Timer:Function = function(cuantasVeces,cadaCuanto){ 
//Valores Iniciales
var cuentaRegresiva:Number = cuantasVeces;
var mi_fecha:Date = new Date();
var tiempoX:Number = mi_fecha.getTime();
var diferencia, cuantasVeces, cadaCuanto, cuantosVan:Number;

this.onEnterFrame = function() {
   var mi_fecha:Date = new Date();
   diferencia = mi_fecha.getTime()-tiempoX;
   if (diferencia>=cadaCuanto) {
      //aqui se ejecuta la funcion deseada
      funcionRotar();
      //funcionMover();
      
      cuentaRegresiva--;
      cuantosVan=cuantasVeces-cuentaRegresiva;
      tiempoX = mi_fecha.getTime();
      trace(cuantosVan+" de "+cuantasVeces);
      
      if(cuentaRegresiva<=0)
      delete this.onEnterFrame;
   }
};
};
//  TERMINA FUNCION TIMER ***


//Timer(70,100);

stop();


Como veras, los 2 primeros parametros ya estan listos, pero no tengo idea de como optimizar la funcion para hacer lo del tercer parametro.

Saludos.

Por cpucpu

82 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Sep 2007 01:39 pm
Bueno, en principio colocas el tercer parámetro dentro de los parámetros (valga la redundancia) de la función. Y respecto a cómo ejecutar ese parámetro, puedes hacer un "switch" para que ejecute la función especificada.

Código :

if (diferencia>=cadaCuanto) {
      //aqui se ejecuta la funcion deseada      
         funcionRotar();   <-----------coloca el switch aquí
      //funcionMover();
      
      cuentaRegresiva--;
      cuantosVan=cuantasVeces-cuentaRegresiva;
      tiempoX = mi_fecha.getTime();
      trace(cuantosVan+" de "+cuantasVeces);
      
      if(cuentaRegresiva<=0)
      delete this.onEnterFrame;
   }

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 10 Sep 2007 04:14 pm
O recogiendo el tercer parámetro como funcion:

Código :

var Timer:Function = function (cuantasVeces, cadaCuanto, funcion:Function) {
   //Valores Iniciales
   var cuentaRegresiva:Number = cuantasVeces;
   var mi_fecha:Date = new Date();
   var tiempoX:Number = mi_fecha.getTime();
   var diferencia, cuantasVeces, cadaCuanto, cuantosVan:Number;
   this.onEnterFrame = function() {
      var mi_fecha:Date = new Date();
      diferencia = mi_fecha.getTime()-tiempoX;
      if (diferencia>=cadaCuanto) {
         //aqui se ejecuta la funcion deseada
         funcion();
         //funcionMover();
         cuentaRegresiva--;
         cuantosVan = cuantasVeces-cuentaRegresiva;
         tiempoX = mi_fecha.getTime();
         trace(cuantosVan+" de "+cuantasVeces);
         if (cuentaRegresiva<=0) {
            delete this.onEnterFrame;
         }
      }
   };
};

Un saludo

Por roceth

0 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Sep 2007 04:19 pm

roceth escribió:

O recogiendo el tercer parámetro como funcion:

Código :

var Timer:Function = function (cuantasVeces, cadaCuanto, funcion:Function) {
   //Valores Iniciales
   var cuentaRegresiva:Number = cuantasVeces;
   var mi_fecha:Date = new Date();
   var tiempoX:Number = mi_fecha.getTime();
   var diferencia, cuantasVeces, cadaCuanto, cuantosVan:Number;
   this.onEnterFrame = function() {
      var mi_fecha:Date = new Date();
      diferencia = mi_fecha.getTime()-tiempoX;
      if (diferencia>=cadaCuanto) {
         //aqui se ejecuta la funcion deseada
         funcion();
         //funcionMover();
         cuentaRegresiva--;
         cuantosVan = cuantasVeces-cuentaRegresiva;
         tiempoX = mi_fecha.getTime();
         trace(cuantosVan+" de "+cuantasVeces);
         if (cuentaRegresiva<=0) {
            delete this.onEnterFrame;
         }
      }
   };
};

Un saludo


También sirve, aunque obligará a quien use la clase a crear su propia función para la animación.

  • Ventaja: Aumenta la cantidad de posibles funciones para la animación (puesto que el código lo escribe el usuario de la clase).
  • Desventaja: Obliga al usuario de la clase a crear el código de las funciones cada vez.

Es cuestión que veas lo que te resulte más conveniente.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 10 Sep 2007 05:17 pm
Pues bueno, gracias a ambo, ya quedo, Saludos. :) y gracias.

Por cpucpu

82 de clabLevel



 

firefox

 

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