Página inicial  

trans_770 trans_160

Unidad 24. Animaciones avanzadas (II)


Función setInterval y propiedad onEnterFrame

 

La función setInterval se utiliza cuando queremos que se repita la ejecución de un código ActionScript cada cierto número de milisegundos, y la propiedad onEnterFrame se utiliza cuando queremos ejecutar un código ActionScript en función de la velocidad de la película Flash.

Estas funciones se pueden utilizar para controlar el tiempo cuando utilizamos ActiónScript y no nos interesa utilizar los fotogramas como forma de control del tiempo.

Por ejemplo, podemos genera un objeto y hacer que se mueva un 5 pixels cada 30 msg. variando estos parámetros conseguiremos que el objeto se mueva más o menos rápido.

bola naranja setInterval

El formato de esta función es el siguiente:

var retardo:Number = setInterval(

       functionReference:Function, interval:Number, [param1:Object, param2, ..., paramN]);

Donde,

functionReference es la función que se va a repetir.

interval es el número de milisegundos que van a transcurrir entre cada llamada a la función.

[param1:Object, param2, ..., paramN] es la lista opcional de parámetros que se pasan a la función.

retardo es una variable que identifica el intervalo y que sirve para utilizarlo con clearInterval() para detener la ejecución.

Por ejemplo, el codigo siguiente escribe 10 veces el mensaje "contador" i , cada 2000 milisegundos (2 sg.).

var i:Number = 1;

var repeticion:Number = setInterval(contar, 2000);

function contar() {

  trace("contador: "+ i++);

  if (i>10) {

     clearInterval(repeticion);

  }

}

La funcion clearInterval sirve para detener la ejecución de la función llamada desde setInterval. Por lo tanto, conviene utilizar clearInterval siempre que usemos setInterval, para evitar que la ejecución continúe indefinidamente.

En el ejemplo del punto anterior hemos definido la función gobal setInterval para que la función botar se ejecute cada 35 milisegundos.

 

bola naranja onEnterFrame

El controlador de eventos onEnterFrame, asociado al objeto MovieClip, permite invocar a una función de forma repetida tantas veces como fotogramas por segundo tenga definida la película.

Por ejemplo, en el movieClip bola_mc:

var i:Number =0;
bola_mc.onEnterFrame = function() { trace("ejecutando: "+ ++i); if ( i > 30 ){ delete this.onEnterFrame; }

}

Si la velocidad de la película es de 12 fps, este código escribiría en la salida 12 líneas por segundo, de esta forma:

ejecutando:1

ejecutando:2

ejecutando:3

...

Como puedes ver hemos añadido una condición para que cuando el valor de i sea mayor de 30 acabe la ejecución del controlador onEnterFrame y así evitar que se ejecute indefinidamente.


bola naranja Aunque con este ejemplo no lo parezca, (sólo pretende explicar la función) estas dos tipo de funciones que se ejecutan repetitivamente pueden ser muy útiles en determinadas ocasiones. A lo largo del cursos ya hemos visto algunos ejemplos de su utilidad, a continuación veremos otro ejemplo que puede sernos útil.

Imagínate que quieres que tu pelicula se detenga durante 2 segundos y luego continue. Esta es una forma de hacerlo utilizando la función setInterval.


Colocariamos este código en el frame que deseemos, llamamos a setInterval con 1 sg (1000 milisg) y cuando se hallan cumplido dos llamadas detenemos setInterval y continuamos con el siguiente frame de la película.

var tope:Number = 1;

var repeticion:Number = setInterval(parar, 1000);

function parar() {

	tope++;

	if (tope > 2) {

		clearInterval(repeticion);

		nextFrame();

		play();

	}

}

stop();






     


© aulaClic. Todos los derechos reservados. Free Computer tutorials. Prohibida la reproducción por cualquier medio.
Septiembre - 2007.