Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Imbriquer des events, possible ou pas ?  (Lu 2787 fois)

0 Membres et 1 Invité sur ce sujet

Rick_Cplusplus

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
    • E-mail
Imbriquer des events, possible ou pas ?
« le: Juillet 12, 2019, 10:13:13 am »
Bonjour la communauté,

Je voudrais créer un déplacement de vue dans une fenêtre qui ressemble à du "drag and drop".
Le comportement attendu c'est :
sur un bouton (left) souris maintenu enfoncé, suivi d'un mouvement souris, récupérer le vecteur du déplacement souris, et déplacer la vue courante de ce vecteur tant que le bouton n'est pas relâché.

Or le tuto précise bien que event est une union ce que je traduis (peut être à tort) par : une instance de event ne peut traiter qu'un evenement à la fois.

Mais peut-on instancier 2 event (event1 et event2) et les imbriquer dans la même fenêtre via 2 pollEvent ?
Quelque chose comme ça :
sf::event event1;
sf::event event2;
while (fenetre.pollEvent(event1))
        {
        ...
        if (event1.type == sf::Event::MouseButtonPressed
        {
                while (fenetre.pollEvent(event2))
                        {
                                 ...
                        }
        }
        ...
 

Si oui, je tente l'implémentation (mais il y a peut être "plus simple" pour faire ça) :)
Si non, avez-vous une piste pour implémenter "autrement"' ? ::)
Salutations,

Rick.

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re: Imbriquer des events, possible ou pas ?
« Réponse #1 le: Juillet 12, 2019, 12:02:55 pm »
Ça n'aurait aucun sens.

Pour faire ton truc, tu peux utiliser un bool que tu mets à true sur l'event MouseButtonPressed, sur l'event MouseMoved tu déplaces ta vue si le bool est à true, et sur MouseButtonReleased tu mets ton bool à false.

Rick_Cplusplus

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
    • E-mail
Re: Imbriquer des events, possible ou pas ?
« Réponse #2 le: Juillet 12, 2019, 02:42:15 pm »
Ok vu !  ;)

C'est ce que je viens de faire et devinez ?
Ça marche parfaitement ! 8)

Merci Mister G.  :D
Rick.