/** * Calcul de coordonnées * Pour AS 2 * * Usage : * ------- * Positionner le fichier Coord.as au même niveau que le swf. * * Code : * ------ * // Chargement de la classe (si la classe est dans un sous-dossier, adapter l'appel du import en fonction de l'arborescence) * import Coord; * * // Ajout d'un évènement sur click sur le clip "carre" * _root.carre.onRelease = function(){ * * // Débug pour connaitre les coord de clic (peut permettre de connaitre des coordonnées à cibler préprogrammé pour un movieClip * trace("Clic aux coordonnées : ("+_root._xmouse+":"+_root._ymouse+")"); * * // Instantiation des coordonnées * var co:Coord = new Coord(flechette._x, flechette._y); * * // Lance le déplacement du movieClip "flechette" centré en x sur les coordonnées de la souris * // Paramètre 1 : Coordonnées de destination : new Coord(_root._xmouse+flechette._width/2, _root._ymouse) * // Paramètre 2 : Pas de déplacement en px * // Paramètre 3 : MovieClip à déplacer * // Paramètre 4 : Temps entre 2 déplacements en ms * // Paramètre 5 : Réorientation du clip (non implémenté) * // Paramètre 6 : Mode bavard (débug) * co.deplacer_mc(new Coord(_root._xmouse+flechette._width/2, _root._ymouse), 1, _root.flechette, 10, false, true); * } */ class Coord { public var x, y:Number; public var it, time:Number; // Constructeur public function Coord(x:Number, y:Number){ this.x = x; this.y = y; } // Clone public function clone():Coord { return new Coord(this.x, this.y); } // Vérifie si les coordonnées fournies sont celle du point public function egal(coord:Coord):Boolean { return (this.x == coord.x && this.y == coord.y); } // Calcul la distance séparant 2 points public function dist(destination:Coord):Number { return Math.sqrt(Math.pow((destination.x-this.x), 2)+Math.pow((destination.y-this.y), 2)); } // Calcul la distance séparant les 2 points en X public function distX(destination:Coord):Number { return (destination.x-this.x); } // Calcul la distance séparant les 2 points en Y public function distY(destination:Coord):Number { return (destination.y-this.y); } // Calcul le déplacement X et Y pour avancer de pas public function avancer(destination:Coord, pas:Number):Coord { var coord_x:Number = null; var coord_y:Number = null; // Calcul de la distance entre les points var dist = this.dist(destination); // Calcul de l'équivalent du pas par rapport à la longueur du segment var dist_pas = pas/dist // Calcul du pas en abscice var pas_x = dist_pas * this.distX(destination); // Calcul du pas en ordonnées var pas_y = dist_pas * this.distY(destination); // Renvoi le point correspondant au pas if ((this.xdestination.x) || (this.x>destination.x && (this.x+pas_x)destination.y) || (this.y>destination.y && (this.y+pas_y)