Comunidad de diseño web y desarrollo en internet online

Flash 8: La nueva clase Point

Mucho se está hablando de algunas de las nuevas clases que trae el nuevo Flash 8, sobretodo las de color, filtros o FileReference, para subir y bajar archivos de un servidor y poder monitorizarlo. Curiosamente, yo no había oído nada de la clase Point, la cual descubrí dándole un vistazo a la (siempre útil) ayuda de Flash.

Con Point podemos crear objetos que son puntos virtuales en nuestra pantalla y luego poder calcular distancias, equidistancias e interpolaciones (no de movimiento) entre éstos puntos. Veámos un ejemplo sencillo.



En este ejemplo vemos como dado un punto A y un punto B, podemos calcular la distancia entre ellos y además la distancia intermedia de ellos. Como podéis observar en el código con el método distance() calculamos la distancia entre A y B, y con el método interpolate la distancia entre los puntos A y B con C.

Código :

//Declaración e inicio ////////////////////////////////////
import flash.geom.Point;
var alMover:Object = new Object();

attachMovie("punto", "a_btn", 2);
attachMovie("punto", "b_btn", 3);
attachMovie("punto", "c_btn", 4);
a_btn._x = 90;
a_btn._y = 60;
b_btn._x = 170;
b_btn._y = 80;
crearLinea();

////////////////////////////////////////////////////////////////////
//Eventos de los botones
a_btn.onPress = function(){
   startDrag(this, false);
}
a_btn.onRelease = onReleaseOutside = function(){
   stopDrag();
}
b_btn.onPress = function(){
   startDrag(this, false);
}
b_btn.onRelease = onReleaseOutside = function(){
   stopDrag();
}

//Al mover el ratón creamos la línea entre los puntos
alMover.onMouseMove = function(){
   crearLinea();
}
Mouse.addListener(alMover);

//////////////////////////////////////////////////////////////////
//Función para crear la línea y calcular distancias
function crearLinea(){
   createEmptyMovieClip("linea_mc", 1);
   
   linea_mc.lineStyle(3, 0x000000, 100, true, "none", "round", "miter", 1);
   linea_mc.moveTo(a_btn._x, a_btn._y);
   linea_mc.lineTo(a_btn._x, a_btn._y);
   linea_mc.lineTo(b_btn._x, b_btn._y);
   
   //Ponemos la distancia entre puntos
   var punto_a:Point = new Point(a_btn._x, a_btn._y);
   var punto_b:Point = new Point(b_btn._x, b_btn._y);
   var distancia:Number = Point.distance(punto_a, punto_b);
   distancia_txt.text = redondear(distancia, 2);
   
   //Punto intermedio
   var intermedio:Point = Point.interpolate(punto_a, punto_b, 0.5);
   c_btn._x = intermedio.x;
   c_btn._y = intermedio.y;
}

//Función para redondear números
function redondear(n, dig){
   mult = "1";
   for (i=0; i<dig; i++){
      mult += "0";
   }
   tempn = n * mult;
   tempn = Math.round(tempn);
   n = tempn / mult;
   
   return n;
}


Gracias a esta nueva clase tenemos una perfecta ayuda para hacer menús dinámicos, juegos o cualquier otra cosa que requiera cálculo de posiciones, que son muchas.

Un saludo!! ^^

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate