cs_Anonyme54
Messages postés22Date d'inscriptionmardi 20 décembre 2005StatutMembreDernière intervention10 juin 2007
-
11 févr. 2006 à 14:29
cs_Anonyme54
Messages postés22Date d'inscriptionmardi 20 décembre 2005StatutMembreDernière intervention10 juin 2007
-
13 févr. 2006 à 18:21
Bonjour,
J'aimerais faire un clip qui va vers un autre (en x et en y) mais je ne sais pas comment faire pour que ce soit précis car j'ai essayé comme ça :
onClipEvent(enterFrame){
if(_x < _root.objet2._x){
_x += 5
}
if(_x > _root.objet2._x){
_x -= 5
}
if(_y < _root.objet2._y){
_y += 5
}
if(_y > _root.objet2._y){
_y -= 5
}
}
mais le problème, c'est qu'il ne prend pas le chemin le plus court, il ne peux aller que de 0° , 45° , 90° , 135 ° , 180° , 225° , 270° et 315°. Comment faire pour qu'il puisse aussi aller de 1° , 2° , 3° etc ?
J'espère que qqun pourra m'aider...
atchoumdu51
Messages postés194Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention16 juillet 20071 11 févr. 2006 à 19:35
Bonjour
pour cela je penserais utiliser la trigo pour déterminer l'angle entre l'horizontale et le clip destination que l'on rentre dans un paramatre a, pouis on avance sur _x de vitesse*Math.cos(a) et sur _y de vitesse*Math.sin(a) avec vitesse une valeur positive
c'est une premiere idée si tu veux réfléchir dessus, si tu ne comprends pas très bien ce que je veux dire signale le et je donnerais plus de détails et d'aide
atchoumdu51
Messages postés194Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention16 juillet 20071 13 févr. 2006 à 17:56
Je t'ai fait un exemple la mais je n'ai pas commenté la source, je te fais le commentaire ici:
le fla est jsute sur la premiere frame, il y a deux clips carre1 et carre2
carre 1 est celui qui suit carre2
carre2:
on (press) {
this.startDrag(false);
}
on (release) {
this.stopDrag();
}
on (releaseOutside) {
this.stopDrag();
}ceci sert juste a pouvoir le déplacer en cliquant dessus
carre1:
onClipEvent (enterFrame) {
vitesse = new Number(5);
var deltaX = new Number(_root.carre2._x-this._x);
var deltaY = new Number(_root.carre2._y-this._y);
if (Math.sqrt(deltaX*deltaX+deltaY*deltaY)>vitesse) {
if (deltaX<0) {
if (deltaY<0) {
var angle = new Number(Math.PI-Math.atan(deltaY/deltaX));
} else {
var angle = new Number(-Math.PI-Math.atan(deltaY/deltaX));
}
} else {
var angle = new Number(-Math.atan(deltaY/deltaX));
}
this._x += vitesse*Math.cos(angle);
this._y -= vitesse*Math.sin(angle);
}
}
on commence par initialiser la vitesse voulue puis on mesure les écarts sur _x et _y (attention les coordonnées sont relatives au clip parent) puis on teste la distance entre les clips qui doit etre plus faible que vitesse (on a des effets de clignotement sans cela)
ensuite on fait de la trigo pour avoir l'angle entre l'horizontale (partant vers la droite) et tournant dans le sens anti horaire (les formules on s'y habitue) et grace a cet angle on a la direction que l'on veut donner au clip il suffit donc d'incrémenter _x et _y de la projection sur les axes ( - pour _y car en cours j'utilise un repere avec y vers la haut alors que dès que l'on programme il est dirigé vers le bas.
Bon le code n'est surement pas optimisé on doit pouvoir faire mieux au niveau de la trigo
voili voilou bonne continuation (et n'hésite pas a continuer le topic si tu désires d'autres explications, si c'est OK alors valide la réponse stp)
Vous n’avez pas trouvé la réponse que vous recherchez ?