Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Imbriquer des events, possible ou pas ?  (Read 6163 times)

0 Members and 1 Guest are viewing this topic.

Rick_Cplusplus

  • Newbie
  • *
  • Posts: 34
    • View Profile
    • Email
Imbriquer des events, possible ou pas ?
« on: July 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
  • *****
  • Posts: 1599
    • View Profile
Re: Imbriquer des events, possible ou pas ?
« Reply #1 on: July 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
  • *
  • Posts: 34
    • View Profile
    • Email
Re: Imbriquer des events, possible ou pas ?
« Reply #2 on: July 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.