Bonsoir à tous,
Je viens tout juste de me mettre au Flash, sous macromédia Flash 8.
Et là je coince sur quelque chose, qui m'apparait pourtant, a priori, pas trés compliqué...
D'où mon appelle à l'aide
Dans ma scène, j'ai créé un clip.
J'ai ajouté des fonctionnalités de 'Drag And Drop' à ce clip.
Lorsque je relache ce clip à une position spécifiée, je souhaiterai qu'il ne soit plus 'déplaçable' par l'utilisateur.
Mon problème est le suivant, lorsque que je relache le bouton de la souris dans un périmètre de 15 pixels autour du point spécifié, le positionnement de mon clip est bien corrigé et prends exactement la position du point spécifié (cf. evenement release).
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 on(press) { //appui souris sur la piece if ((this._x!=365) || (this._y!=337.9)) { //si x ou y du clip ne correspond pas à la position spécifiée (en l'occurence (365,337.9) ici). this.swapDepths(1); //on le passe au premier plan startDrag (this); //et on commence le drag } } on (release) { //relachement de la souris sur la pièce stopDrag (); //on stop le drag if ((this._x>365-15) && (this._x < 365+15) && (this._y>337.9-15) && (this._y < 337.9+15) ) { //si le relachement se fait dans un périmétre de 15 pixels autour de la position spécifiée (toujours (365,337.9)) this._x = 365; //on place le clip exactement à la position spécifiée this._y = 337.9; } }
Or, lorsque je clique de nouveau sur le clip, alors qu'il est à la position spécifiée, la condition:
reste toujours vérifiée !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ((this._x!=365) || (this._y!=337.9))
En plaçant un breakpoint de debug au niveau de la ligne de cette condition, this._x vaut bien 365 et this._y vaut bien 337.9, ce qui devrait rendre cette condition fausse, non?
Voyez-vous d'où pourrait venir mon erreur?
Merci d'avance
Cordialement,
Benjamin
EDIT
Humm... Ce bout de code fonctionne parfaitement lorsque ma position spécifiée est (0,0)...
EDIT 2
Cela fonctionne aussi pour un point trés proche de mon point voulu (à savoir (364.85,338).
Je commence à comprendre... La valeure lue dans le debuggeur pour this._x ou this._y ne doit pas être 'exacte', mais une valeure approchée de la position du clip...
D'un autre côté, ce n'est pas trés malin de ma part de faire des comparaisons sur des 'double'...
J'incorpore donc, dans ma comparaison, une marge de précision de 1 pixel autour de mon point spécifiée.
Cela semble, à première vue, corriger mon problème.
Je me permets de laisser le sujet ouvert, le temps d'avoir votre avis.
Trés bonne soirée
Partager