Actionscript 3.0: Simular el movimiento de una cuerda
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
//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(); |