Cristalab

Flash 8: La nueva clase Point

   Foros de discusión -> Weblog
Mensaje Autor
Mensaje Publicado: Lun Sep 19, 2005 6:14 pm     Citar   firefox 
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!! miau
 _________________


Reglas del foro || Guia para hacer preguntas y obtener ayuda efectiva

Elecash

Héroes
clabLevel: 7288 Genero:Masculino
BarnaCity
30 Tutoriales
1 Tips
13 Ejemplos

MP Email Web         
Volver arriba
Mensaje Publicado: Lun Sep 19, 2005 6:30 pm     Citar   firefox 
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
 _________________

Freddie
BOFH

Admin
clabLevel: 43455
Un avión, camino a tu casa
25 Tutoriales
6 Tips
43 Ejemplos

MP Email Web     Google Talk    
Volver arriba
Mensaje Publicado: Lun Sep 19, 2005 6:49 pm     Citar   firefox 
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:)

Zah
SWAT Team

SWAT Héroes
clabLevel: 2800 Genero:Masculino
Zaragoza, España
4 Tutoriales
20 Tips

MP Email     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Lun Sep 19, 2005 7:26 pm     Citar   firefox 
Muy buen dato amigo eleca$h ...

Freddie® escribió:

....Aunque supongo que su ventaja radica precisamente en estar escrita dentro del Player y no en Actionscript...


Como es eso Freddie?... como puedes deducir eso?... Muy Feliz...
 _________________
3|2!k©
Porroa.com/erik

xRoa©


clabLevel: 599 Genero:Masculino
Lima - Peru!


MP Email Web       MSN Messenger  
Volver arriba
Mensaje Publicado: Lun Sep 19, 2005 7:33 pm     Citar   firefox 
Es sencillo Erik©; si abres la carpeta

Código :

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
 _________________

Freddie
BOFH

Admin
clabLevel: 43455
Un avión, camino a tu casa
25 Tutoriales
6 Tips
43 Ejemplos

MP Email Web     Google Talk    
Volver arriba
Mensaje Publicado: Mar Sep 20, 2005 1:48 am     Citar   firefox 
CARAJO!!! y yo ke me estaba empezando a quemar los sesos con esto :: Aw Crap

www.glsweb.com/vector.zip

mmmm

No pues ahora un poco más sencillo ... miau
Aunque ya me quitaron lo ke a lo mejor sería mi primer tutoral Triste

glsmaster_blog
Invitado






        
Volver arriba
Mensaje Publicado: Mar Sep 20, 2005 8:35 am     Citar   firefox 
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...
 _________________
Test de 8 colores

Sisco
SWAT Team

SWAT
clabLevel: 3028
Catalunya
6 Tutoriales
4 Tips

MP Web         
Volver arriba
Mensaje Publicado: Mar Sep 20, 2005 11:00 am     Citar   firefox 
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.

Joseba_blog
Invitado






        
Volver arriba
Mensaje Publicado: Mar Sep 20, 2005 6:55 pm     Citar   firefox 

Joseba_blog escribió:

Pasó lo mismo con el objeto XML cuando pasó de Flash 5 a Flash 6.

Ese era precisamente mi punto
 _________________

Freddie
BOFH

Admin
clabLevel: 43455
Un avión, camino a tu casa
25 Tutoriales
6 Tips
43 Ejemplos

MP Email Web     Google Talk    
Volver arriba
Mensaje Publicado: Mar Sep 20, 2005 8:08 pm     Citar   firefox 
Gracias F... Riendo. .. siempre hay algo nuevo que aprender .. .

salu2

por sierto.. que paso con el post del keygen y el crack eh?... se calentaron las aguas Muy Feliz
 _________________
3|2!k©
Porroa.com/erik

xRoa©


clabLevel: 599 Genero:Masculino
Lima - Peru!


MP Email Web       MSN Messenger  
Volver arriba
Mensaje Publicado: Mie Sep 21, 2005 1:26 am     Citar   msie 
Hola a todos sé que no tengo que preguntar aquí, pero alguien sabe como quitarle al Dreamweaver 8.0 lo de la compactación del código? me molesta eso!

Gracias de antemano.

PeterTheLuis_blog
Invitado






        
Volver arriba
Mensaje Publicado: Mie Sep 21, 2005 1:27 am     Citar   msie 
Gracias ya lo encontre! Muy Feliz

PeterTheLuis_blog
Invitado






        
Volver arriba
Mensaje Publicado: Lun Mar 06, 2006 3:40 pm     Citar   msie 
solo quiero hacer una opcion donde se pueda crear una linea simple como en point

lucas_mack_blog
Invitado






        
Volver arriba
Mensaje Publicado: Lun Mar 06, 2006 3:41 pm     Citar   msie 
si alguien me puede ayudar porfavor

lucas_mack_blog
Invitado






        
Volver arriba
Mensaje Publicado: Lun Mar 06, 2006 8:10 pm     Citar   clabbrowser 
lucas_mack, las preguntas técnicas en los foros por favor.



Guiño
 _________________
LA100RRA 3logs: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12 13...
* * *

La100rra
BOFH

Bastard Operators From Hell REC
clabLevel: 5520 Genero:Masculino
Cd. Juárez, Chihuahua, México.

11 Tips

MP Web     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Jue Ene 11, 2007 4:29 pm     Citar   msie 
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,

Teseo
SWAT Team

Héroes SWAT
clabLevel: 1447 Genero:Masculino
Oviedo
1 Tutoriales
13 Tips

MP       MSN Messenger  
Volver arriba
Mensaje Publicado: Dom May 06, 2007 1:02 am     Citar   msie 
quiero aprender animar en flash 8 omarch19@hotmail.com

omar_blog
Invitado






        
Volver arriba
Mensaje Publicado: Lun Jun 18, 2007 1:02 am     Citar   msie 
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

Amin_blog
Invitado






        
Volver arriba
Mensaje Publicado: Lun Jun 18, 2007 2:25 am     Citar   firefox 
Qué código tratas de implementar en Flash 8?
 _________________
Developer At Work http://www.cristalab.com/devatwork

Yaraher


clabLevel: 501 Genero:Masculino
Callao, Perú


MP Email Web     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Jue Mar 27, 2008 2:45 pm     Citar   msie 
point yo digo es de pintar son preguntas de eso polk esq ami me sale
otras cosas

stefany_blog
Invitado






        
Volver arriba
Mensaje Publicado: Jue Mar 27, 2008 7:22 pm     Citar   firefox 
gracias por este articulo.
 _________________
Maborak reader - Rss Reader project (Open Source)
http://sourceforge.net/projects/maborakreader


MaBoRaK


clabLevel: 19 Genero:Masculino



MP         
Volver arriba
Responder al tema    Foros de discusión -> Weblog Todas las horas son GMT
Página 1 de 1

Respuesta Rapida
Nick: 

  Citar el ultimo mensaje
Adjuntar tu firma

Mostrar mensajes de anteriores:
  

 


Cristalab BloodBerry Style © 2006 Cristalab
Powered by phpBB © 2001, 2002 phpBB Group