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();
//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);
//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);
//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.
Pues habria que ver que es mas pesado para el procesador, si el calculo de la hipotenusa en la ecuación de distancia o la creación del objeto y llamada de sus funciones. 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:Freddie
Vaya, pues si que es útil. Uno nunca se cansa de aprender flash. Ahora podré hacer mejoras en algún juego... en fin, ÚTIL. Y gracias:) Por:Zah
Muy buen dato amigo eleca$h ...
Freddie® :
....Aunque supongo que su ventaja radica precisamente en estar escrita dentro del Player y no en Actionscript...
C:\Archivos de programa\Macromedia\Flash 8\en\First Run\Classes\FP8\flash\geom
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:Freddie
CARAJO!!! y yo ke me estaba empezando a quemar los sesos con esto ::
No pues ahora un poco más sencillo ... Aunque ya me quitaron lo ke a lo mejor sería mi primer tutoral Por:glsmaster_blog
elecash, coge fuerzas, porque ya sabes neng que te va a tocar hacer una nueva serie de tutos... je je... que la fuerza te acompañe... te debo un cromo de Ronaldinho... Por:Sisco
Que yo sepa las clases de geometria de Flash, aunque estan efectivamente en el Player, como dice Freddie, estan escritas en AS, por lo que no notareis diferencia, en cuanto a performancem, a hacerlas vosotros mismos. Me imagino que sera un calculo de hipotenusa, como comentan por ahi...
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. Por:Joseba_blog
Joseba_blog :
Pasó lo mismo con el objeto XML cuando pasó de Flash 5 a Flash 6.
Añado al tema el ejemplo de una función muy simple que aplica Point.polar para crear polígonos:
Código :
import flash.geom.Point; function poligono(l, pt, r, t){ //t=0 o sin pasar: l lados, centro en Po y radio circunscrita r //t=1 : l lados de longitud r y 1er vertice en Po this.moveTo(pt.x+r, pt.y); rd = 2*Math.PI; for(b=0; b <= rd; b += rd/l){ pt2 = pt.add(Point.polar(r,b)); if (t) pt = pt2; this.lineTo(pt2.x, pt2.y); } } // formas de llamada: (con la clase Point ya importada) this.lineStyle(4,0xff0000); poligono(4,new Point(100,100),80,1); this.lineStyle(3,0xff00); Pe = new Point(100,100); poligono(6,Pe,50,0); this.lineStyle(2,0xff); poligono(8,new Point(100,100),60,1); this.lineStyle(0); poligono(360,Pe,70);//circulo
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:Teseo
cuando hay un codigo en version 6 y lo paso a version 8...me arroja un error...como hago para que el codigo de la vrs 6 me corra en vrs 8 asalamna68@hotmail.com Por:Amin_blog
Qué código tratas de implementar en Flash 8? Por:Yaraher
point yo digo es de pintar son preguntas de eso polk esq ami me sale otras cosas Por:stefany_blog