sábado, 5 de noviembre de 2011

Suavizando el movimiento de objetos con AS3


Con este pequeño código se explica el uso de la función seno, aplicada al movimiento de objetos de arriba a abajo de manera suavizada, la suavidad del movimiento se refiere a hacer que este movimiento sea más real,  esta clase hace uso de otra, llamada Ball.as (bola) que crea una instancia bola que se usa en el escenario a la que se aplica el movimiento de balanceo de arriba a abajo.
//modificaciones de la clase Smooth and Down Motion
package{
 import flash.display.Sprite;
 import flash.events.Event;

 public class Bobbing2 extends Sprite{
  private var ball:Ball;
  //aqui empieza la modificaciones
  private var angle:Number= 0;
  private var centerY:Number=150;
  private var range:Number= 100;
  private var speed:Number= .1;
  
  public function Bobbing2(){
   init();
  }
  private function init():void{
   ball = new Ball();
   addChild(ball);
   ball.x=stage.stageWidth/2;
   addEventListener(Event.ENTER_FRAME, onEnterFrame);
  }
  public function onEnterFrame(event:Event):void{
   ball.y=centerY+Math.sin(angle)*range;
   angle+=speed;
  }
 }
}
Como podemos ver en este sencillo código, además del objeto ball, se crea 3 variables que son el ángulo, al que le aplicamos la función seno, la ubicación de la instancia ball en el escenario esta respecto al eje Y en el punto centerY que tiene la mistad de nuestro escenario justamente (si nuestro escenario es de 300px entonces el centro de este será de 150 px), nuestro punto de referencia constante es el eje x por lo que no varía sin embargo el eje y si varia por lo que le aplicamos la formula:
ball.y=centerY+Math.sin(angle)*range;
Que da el efecto de movimiento sobre el eje y, aplicado justo al centro de nuestro escenario más el seno del ángulo; que esta multiplicado por el rango de movimiento que está definido en 100,en la siguiente línea de código:
angle+=speed;
A este Angulo se le hace un incremento respecto a la velocidad, con la que actúa el objeto ball. Luego de compilar nuestro código podemos ver en el escenario lo siguiente: