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”
Leave a Reply
You must be logged in to post a comment.

November 11th, 2007 at 11:49 pm
[…] de… Algunos métodos útiles para manejo de números en Flash Nov […]