Bonjour à tous,

Voici le petit soucis que j'ai un peu de mal à résoudre sous flash.
En gros, j'ai deux symboles, un rond rouge, et un rond noir.

A l'aide d'un startDrag et d'un stopDrag je permet de déplacer mon rond rouge, jusqu'ici aucun problème

Maintenant je voudrais qu' en déplaçant le rond rouge plus ou moins près du rond noir, celui-ci prenne exactement la même position, un peu comme quand on utilise des repères avec la règle dans Flash ou Photoshop. Disons que si mon symbole RondRouge est à 10pixels près de RondNoir, il doit prendre la valeur de RondNoir.



Voici ce que j'ai fait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
this.stop();
 
RondRouge.addEventListener(MouseEvent.MOUSE_DOWN, bouger);
RondRouge.addEventListener(MouseEvent.MOUSE_UP, arreter);
 
function bouger(infos){
 
       RondRouge.startDrag();
 
       if ((RondRouge.x == RondNoir.x +10) || (RondRouge.x == RondNoir.x - 10))
        {
         RondRouge.x = RondNoir.x;
         }
 
}
 
 
function arreter (infos){
       RondRouge.stopDrag();
}
Cependant cela ne marche absolument pas... Je peux déplacer mon Rond Rouge, mais il n'est pas "aimanté" sur le rond noir quand je passe à proximité de celui-ci...

EDIT : En fait j'ai également essayé ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
       if (RondNoir.x + 10 > RondRouge.x > RondNoir - 10)
        {
         RondRouge.x = RondNoir.x;
         }
Car je me suis rendu compte que dans l'autre cas il fallait que ce soir pile poil à 10 pixels près, or moi je souhaite indiquer une "fourchette".

EDIT2 : Je vous présente mes excuses je suis peut-être allé un peu vite poster mon problème... En fouillant sur le forum plus en détail, je me suis rendu compte que pas mal de personnes avaient ce soucis. J'ai enfin trouver une solution, c'est vrai que ma première idée était loin d'être la bonne, je poste quand même pour les gens à qui cela pourrait être utile, notamment pour des "puzzle" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
this.stop();
 
RondRouge.addEventListener (MouseEvent.MOUSE_DOWN, bouger);
RondRouge.addEventListener (MouseEvent.MOUSE_UP, arreter);
 
function bouger(infos)
{
      RondRouge.startDrag();
}
 
 
function arreter(infos);
{     RondRouge.stopDrag();
 
      if (RondRouge.x >= (RondNoir.x -50))
      {
       RondRouge.x = RondNoir.x;
      }
 
      if (RondRouge.y >= (RondNoir.y -50))
      {
       RondRouge.y = RondNoir.y;
      }
 
}
Ce qui est dommage c'est que du coup on doit le mettre dans la fonction où l'on relache le symbole, ca ne peut pas être aimanté lorsqu'on le bouge avec la souris...