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!!
![^^](/foros/images/smiles/icon_miau.gif)
¿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.
Aunque supongo que su ventaja radica precisamente en estar escrita dentro del Player y no en Actionscript, como lo haria uno mismo creando su propia "clase Point", lo que puede hacer el codigo mas eficiente.
Lo que si es indudable es la simplificación del codigo
Por eporroa el 19 de Septiembre de 2005
Freddie® :
Como es eso Freddie?... como puedes deducir eso?...
Código :
Y ahi miras el archivo Point.as, veras que es una interface con las variables declaradas, pero sin implementar ninguna función, por lo que es faculmente deducible que esta programada en C++ e implementada dentro del Player, haciendo mucho mas veloz de ejecutar
Por glsmaster el 20 de Septiembre de 2005
www.glsweb.com/vector.zip
No pues ahora un poco más sencillo ...
Aunque ya me quitaron lo ke a lo mejor sería mi primer tutoral
Por Joseba el 20 de Septiembre de 2005
Lo bueno es que si en Flash 9 deciden hacerlas nativas, todo nuestro codigo se beneficiaria de ello sin necesidad de reescribirlo, esto no ocurriria así si crearamos nuestra propia clase Point. Pasó lo mismo con el objeto XML cuando pasó de Flash 5 a Flash 6.
Joseba_blog :
Ese era precisamente mi punto
Por eporroa el 20 de Septiembre de 2005
salu2
por sierto.. que paso con el post del keygen y el crack eh?... se calentaron las aguas
Por PeterTheLuis el 21 de Septiembre de 2005
Gracias de antemano.
Por PeterTheLuis el 21 de Septiembre de 2005
Por lucas_mack el 06 de Marzo de 2006
Por lucas_mack el 06 de Marzo de 2006
Código :
También es extensible a estrellas, engranajes y espirales...
Ejemplo : si b<= 2*rd en el bucle y el número de lados pedido es 2.5 .....el pentagrama. Es sencillo de entender: dos vueltas dibujando dos lados y medio,
Por omar el 06 de Mayo de 2007
Por Amin el 18 de Junio de 2007
[email protected]
Por stefany el 27 de Marzo de 2008
otras cosas
Por MaBoRaK el 27 de Marzo de 2008