Tuesday, September 25, 2007

Usar el evento EnterFrame en action script 3.0

Bien explicaré este evento de la siguiente manera:
ANTES.- quiero hacer una animación en la que tengo un circulo y hacer que desaparezca aplicandole alpha de 100 % a 0%. Se puede hacer de dos formas:
1.-Creamos nuestro objeto circulo lo arrastramos> convertir a símbolo> y dejas que la línea de tiempo corra,,,, y empieze y termina la animación, si queremos que se detenga le pones stop(); al final del fotograma.

2.-Es a donde queremos llegar, COMO CREAMOS ESTA ANIMACION DESDE ACTION SCRIPT 3.0=? ,, y sobre todo como animarla, crear la linea de tiempo, y finalizarla aqui es donde necesitaremos usar el evento enterFrame. aqui la forma:


import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;

// Dibujar un círculo y añadirlo a el lienzo con addChild
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0x990000);
circle.graphics.drawCircle(50, 50, 50);
circle.graphics.endFill();
addChild(circle);

// Cuando se inicia esta animación, se llama a esta función en cada fotograma.
// El cambio provocado por esta función (actualizado en la pantalla en cada
// fotograma) es lo que hace que se produzca esta animación.
function fadeCircle(event:Event):void
{
circle.alpha -= .05;

if (circle.alpha <= 0)
{
circle.removeEventListener(Event.ENTER_FRAME, fadeCircle);
}
}
//esta funcion startAnimacion crea el evento CLICK para que al hacer click en el circulo
//se inice el evento ENTER_FRAME
function startAnimation(event:MouseEvent):void
{
circle.addEventListener(Event.ENTER_FRAME, fadeCircle);
}

circle.addEventListener(MouseEvent.CLICK, startAnimation);

ahora si quisieramos que se inicie el evento sin hacer click en circulo, hacemos lo siguiente:
//remplazamos las 4 ultimas lineas por(quitando la funcion click):
circle.addEventListener(Event.ENTER_FRAME, fadeCircle);


aqui vemos el ejemplo


click para iniciar el evento enterFrame

2 comments:

Anonymous said...

muy util igual puedes poner add quitando el remove y lo ejecuta igual
gracias

MaLkAvIaN_NeT said...

Si no pueden ver el ejemplo es porque el archivo que estaba alojado en un host fue dado de baja, mil disculpas.