Bonjour,
Je cherche à faire un drag & drop de Sprite dans une scène.
En bon débutant, j'ai trouvé les fonctions startDrag et stopDrag() couplé au event MouseEvent.MOUSE_DOWN et MouseEvent.MOUSE_UP.
Ca marche plutôt pas mal. Mais par toujours.
Si lors du drag je sort de la zone autorisé ou que je relance le bouton sur un éléments situé devants le Sprite, le MouseEvent.MOUSE_UP n'est pas reçu et le drag ne s'arrête pas
En faisant le parrallèle avec d'autre framework, je me suis dit que je vais mettre l'écoute du mouseup sur le parent du parent du parent,....
Et ca marche nikel.
Mais bon comme je suis archi débutant(6j de dev) je ne sais pas si ce que j'ai fait est la bonne méthode ou s'il y as mieux.
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 package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.geom.Point; class mySprite extends Sprite { public function mySprite() { /* Sprite draw*/ ... addEventListener(MouseEvent.MOUSE_MOVE,mousedown); } private function mousedown(ev:MouseEvent):void { startDrag(true); var p:Object = this; while(p.parent != null) p = p.parent; p.addEventListener(MouseEvent.MOUSE_UP,mouseup); } private function mousedown(ev:MouseEvent):void { stopDrag(); var p:Object = this; while(p.parent != null) p = p.parent; p.removeEventListener(MouseEvent.MOUSE_UP,mouseup); } } }
Qu'en pensez vous?
![]()
Partager