Actionscript 3.0: Simular el movimiento de una cuerda

Etiquetas: addEventListener graphics clear moveTo lineStyle curveTo Math.sin Math.sqrt

Cuando empecé a aprender Flash, lo que más me llamaba la atención eran los experimentos de páginas como uncontrol. Con el tiempo he ido viendo que algunos de esos experimentos no son tan complicados como me parecían, sino que son una mezcla de imaginación y matemáticas. Este es el código para simular el movimiento de una cuerda oscilando, utilizando la función curveTo y un poco de matemáticas.

//CLASES
import flash.display.*;
 
//VARIABLES
 
var ang:Number;
//Longitud del hilo
var l:Number = 300;
 
//FUNCIONES
 
//Inicializa la escena
function Empezar(){
	Extremo2_mc.ang = 0;
	Extremo2_mc.addEventListener(Event.ENTER_FRAME,Mover);
	addEventListener(Event.ENTER_FRAME,Dibujar);
}
 
//Esta función dibuja la curva que "simula" el hilo
function Dibujar(e:Event){
	Dibujo_mc.graphics.clear();
	Dibujo_mc.graphics.moveTo(Extremo1_mc.x,Extremo1_mc.y);
	Dibujo_mc.graphics.lineStyle(2, 0x000000);
	var ex1 = Extremo1_mc.x;
	var ex2 = Extremo2_mc.x;
	//Esta es la linea que dibuja el hilo cada frame. La sintaxis es 
	//clip.graphics.curveTo(fugax,fugay,finalx,finaly)
	Dibujo_mc.graphics.curveTo(ex2 - (0.8 * (ex2-ex1)), Extremo2_mc.y - 100,Extremo2_mc.x,Extremo2_mc.y);
}
 
//Mueve el extremo del hilo
function Mover(e:Event){
	e.target.x = 200 + Math.sin(e.target.ang) * 150;
	var difx = e.target.x - Extremo1_mc.x;
	e.target.y = Math.sqrt(l*l - difx*difx) + Extremo1_mc.y;
	e.target.ang+=0.05;
}
 
//Pongo en marcha
Empezar();

Comentarios:
Carlos Montiel Renteria dijo:
Hola, estoy incorporandome al mundo del Actionscript, ¿podrian hecharme uma mano?, se trata de simular un pendulo y la verdad que ni siquiera se por donde empezar, muchas gracias anticipadamente, saludos
Dejar un comentario:
Tu nombre (obligatorio):

E-mail (obligatorio, no se mostrará):

Web: