Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Bug ou incompréhension de ma part ? [Résolu] Mar 1 Mai 2018 - 1:12 | |
| Pour la fonction MOUSE_LEFT_DOWN(N), la doc dit qu'elle returne 1 si le bouton gauche est enfoncé au-dessus de l'objet N, et 0 sinon. Et MOUSE_LEFT_UP(N) est supposé de façon symmétrique. Donc, je supposais naïvement que, lorsque MOUSE_LEFT_DOWN retourne 1, MOUSE_LEFT_UP retourne 0 et vice-versa, permettant ainsi de tester à tout moment si le bouton gauche de la souris est enfoncé ou non, au-dessus d'un objet. Or, il n'en est rien. Que le bouton gauche soit enfoncé ou non, ces deux fonctions retournent 0 dans une belle unisson, sauf une seule fois, au moment précis ou le bouton gauche est enfoncé ou relâché. Là, les valeurs sont bonnes, une foiset une seule. Tel quel, ces fonctions ne permettent donc pas de connaître l'état du bouton gauche au-dessus d'un objet (il en est de même pour le bouton droit). Ces fonctions ne signalent que les transitions, ce qui est déjà fait par les évènements ON_MOUSE_DOWN et ON_MOUSE_UP. Mais il est impossible de les utiliser dans un évèmenent ON_MOUSE_MOVE pour connaître l'état des boutons. Démo: - Code:
-
label move dim x%, y%, d%, u% on_mouse_move 0,move END move: d% = mouse_left_down(0) u% = mouse_left_up(0) x% = mouse_x_position(0) y% = mouse_y_position(0) caption 0, str$(d%)+"/"+str$(u%)+" "+str$(x%)+","+str$(y%) return
Question: est-ce normal ? Pour moi, il y a un problème !
Dernière édition par Klaus le Mar 1 Mai 2018 - 9:29, édité 1 fois | |
|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Bug ou incompréhension de ma part ? [Résolu] Mar 1 Mai 2018 - 9:07 | |
| Difficile à dire à la vue de l'exemple de la doc puisque aucun évènement n'est utilisé, mais j'ai découvert ce comportement comme ça et j'apprécis, il permet de réaliser un cliché de la position de la souris par exemple. Pour connaitre l'état du bouton au dessus d'un objet: - Code:
-
label move dim x%, y%, d%, u% d%=0 : u%=1 :' <----- on_mouse_move 0,move END move: off_mouse_move 0 if mouse_left_down(0)>0 then d%=1 : u%=0 :' <----- if mouse_left_up(0)>0 then d%=0 : u%=1 :' <----- x% = mouse_x_position(0) y% = mouse_y_position(0) caption 0, str$(d%)+"/"+str$(u%)+" "+str$(x%)+","+str$(y%) on_mouse_move 0,move return
Dernière édition par silverman le Mar 1 Mai 2018 - 9:48, édité 1 fois | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Bug ou incompréhension de ma part ? [Résolu] Mar 1 Mai 2018 - 9:28 | |
| Merci, Silverman ! Ton astuce permet de mémoriser le changement d'état du bouton de la souris, et ça devient ainsi utilisable. Donc, on va dire que je n'avais pas compris et que ce n'est pas un bug. Tant lieux. | |
|
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Bug ou incompréhension de ma part ? [Résolu] Mar 1 Mai 2018 - 11:39 | |
| J'ai aussi eu des doutes. Il aurait fallu en fait que les libellés des commandes soient plus explicites, car MOUSE_LEFT_DOWN ne spécifie pas si on surveille l'action du clic gauche, ou l'état du clic gauche. En revanche, le doute disparaitrait avec :
MOUSE_ON_LEFT_DOWN MOUSE_IS_LEFT_DOWN | |
|
Contenu sponsorisé
| Sujet: Re: Bug ou incompréhension de ma part ? [Résolu] | |
| |
|