domingo, 4 de diciembre de 2011

Aplicación de función seno en seudo-movimiento aleatorio


La creación de movimiento aleatorio se hace de manera diferente, pero siguiendo con la idea del uso de funciones seno y coseno aplicados al movimiento de objetos al escenario, es interesante como se puede lograr un movimiento controlado que aparente cierta aleatoriedad.

Para darle una aplicación práctica al código le he aplicado el movimiento al objeto “mosca”, que está en mi biblioteca; este sencillo clip de película tiene un movimiento de alas propio por lo que con el código solo se le da un efecto de vuelo aleatorio, como el de un mosquito real. 

package{
 import flash.display.Sprite;
 import flash.events.Event;
 
 public class MovimientoAleatorio extends Sprite{
  private var mosca:Mosca;
  private var anguloX:Number=0;
  private var anguloY:Number=0;
  private var centroX:Number=150;
  private var centroY:Number=80;
  private var rango:Number=50;
  private var velX:Number=.07;
  private var velY:Number=.11;
  
  public function MovimientoAleatorio(){
   init();
  }
  private function init():void{
   mosca=new Mosca;
   addChild(mosca);
   //mosca.x=0;
   addEventListener(Event.ENTER_FRAME, onEnterFrame);
  }
  public function onEnterFrame(event:Event):void{
   mosca.x=centroX+Math.sin(anguloX)*rango;
   mosca.y=centroY+ Math.sin(anguloY)*rango;
   anguloX+=velX;
   anguloY+=velY;
  }
 }
}

Aunque el movimiento parece al azar, tiene un movimiento muy predeterminado por nuestras funciones; nuestro escenario será más pequeño por lo que definimos centros más pequeños; además de dos ángulos a los que será aplicada su propia velocidad de movimiento del objeto en escenario, además de un rango de movimiento en este caso 50 por la capacidad de desplazamiento de nuestro objeto en el escenario; aplicamos la función seno independientemente en las variables antes definidas respecto al centro y al ángulo que tienen, por lo que el movimiento de onda senoidal se ve claramente en nuestro objeto.