Nueva inscripción para curso “Flash Expert” Un poco más sobre el seguimiento de MovieClips, ahora con restricciones
Nov 10

Muchas veces, a lo largo de algunos desarrollos, nos es necesario crear funciones para manejo de números. Una muy particular es la conversión de radianes a grados, o viceversa. O tener que especificar grados en las funciones trigonómetricas, o calcular el ángulo entre puntos..etc.
Una buena solución, es crear una clase que extienda la clase Math..en mi caso utilizo una llamada Math2, a la cual le incorporo todos los métodos que se, usaré con frecuencia. Incluso de esta forma es posible utilizar todos los métodos de Math, aun en Math2, debido a la herencia.
Solo es necesario tener la clase Math2.as, dentro de la carpeta del proyecto, e importarla cuando es necesario.
El código de Math2.as es:

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
class Math2 extends Math { 
	static function rndBetween(n1:Number, n2:Number) { 
		return n1+random(n2-n1+1);  
 
	} 
	static function radToDeg(n:Number) { 
		return n*180/Math.PI;  
 
	} 
	static function degToRad(n:Number) { 
		return n/180*Math.PI;  
 
	} 
	static function degSin(n:Number) { 
		return Math.sin(n/180*Math.PI);  
 
	} 
	static function degCos(n:Number) { 
		return Math.cos(n/180*Math.PI);  
 
	} 
	static function degTan(n:Number) { 
		return Math.tan(n/180*Math.PI);  
 
	} 
	static function angleBetweenRad(x1:Number, y1:Number, x2:Number, y2:Number) { 
		return Math.atan2((y1-y2), (x1-x2));  
 
	} 
	static function angleBetweenDeg(x1:Number, y1:Number, x2:Number, y2:Number) { 
		return Math.atan2((y1-y2), (x1-x2))*180/Math.PI;  
 
	} 
	static function distanceBetween(x1:Number, y1:Number, x2:Number, y2:Number) { 
		return Math.sqrt(Math.pow((y1-y2),2)+ Math.pow((x1-x2),2));  
 
	} 
}

Cada función es bastante descriptiva en su nombre, random entre dos numeros, conversion de grados a radianes y viceversa, angulo entre dos puntos, distancia entre dos puntos, seno, coseno y tangente con grados decimales como parámetros, etc.
Una manera sencilla de comprobar la utilidad en el .FLA seria con el siguiente código:

1
2
3
4
5
6
7
8
9
10
import Math2; 
trace(Math2.rndBetween(2, 15)); 
trace(Math2.radToDeg(1.2)); 
trace(Math2.degToRad(360)); 
trace(Math2.degCos(90)); 
trace(Math2.degSin(90)); 
trace(Math2.angleBetweenRad(0, 0, 1, 1)); 
trace(Math2.angleBetweenDeg(0, 0, 1, 1)); 
trace(Math2.sin(90/180*Math2.PI)); 
trace(Math2.distanceBetween(0,0,1,1));

Lo mas importante es importar la clase (primera linea), luego pueden usar esta clase, como si fuera Math, pero con sus agregados.

Existe otra forma, mas formal, de realizar lo anterior, modificando el paquete util.Math.* , que pronto lo explicaré.

One Response to “Algunos métodos útiles para manejo de números en Flash”

  1. Un poco mas sobre el seguimiento de MovieClips, ahora con restricciones Says:

    […] de… Algunos métodos útiles para manejo de números en Flash Nov […]

Leave a Reply

You must be logged in to post a comment.

Todos los derechos reservados www.alejandroquarto.com queda prohibido la utilización de los contenidos en esta web para uso comercial.