salut.
j'ai créé une interface qui permet de créer des graphes ( noeuds et arcs).
une fois cela fait ,l'utilisateur peut changer la position des noeuds avec la souris.
Bien évidement il faut que les arcs liés suivent ce mouvement.
voila la partie de code de ma classe Vertex (noeud):
Comme vous pouvez le voir j'ai divisé les arcs en inArc ( ceux qui entrent) et outArc ( ceux qui sortent ).
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 onMouseDragged: function( e: MouseEvent ):Void { if(e.primaryButtonDown) { X = e.x;//le noeud prend la position Y = e.y;//du pointeur de la souris graph.debutArc = false;//pour empecher la creation //d'un arc si on clique sur un autre noeud apres for(i in outArc){//pour tous les arcs sortant du noeud on change i.debutX = X;//leur position de depart i.debutY = Y; } for(j in inArc){//pour tous les arcs entrant on change leur position j.finX = X; //d'arriver j.finY = Y; print("x = "); print(j.finX); print(" y = "); println(j.finY); } } }
ca marche tres bien pour les arcs qui sortent( ils suivent le mouvement du noeuds ) par contre les noeuds entrant ne bougent pas ( pourtant leur position change et les quelques print que j'ai fais affirme cela
Mais ils prennent la nouvelle position dés que j'applique le meme evenement sur leur noeud de depart![]()
voila ma classe Edge ( arc)
bon j'espere que j'etais clair
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public class Edge extends CustomNode{ var alpha: Number; var x: Number; public var debutX: Number; public var debutY: Number; public var finX: Number; public var finY: Number; public var graph: Graph; public var angleC: Number; var arc = Path { elements: [ MoveTo { x: bind debutX y: bind debutY }, ArcTo { x: bind finX y: bind finY radiusX: angleC radiusY: angleC - 10 } ] onMousePressed: function( e: MouseEvent ):Void { if(e.secondaryButtonDown){ delete this from graph.arcs; } } }; override public function create(){ arc } } }
Merci
Partager