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

Auteur Sujet: [Résolu] Boutons à la même position  (Lu 2586 fois)

0 Membres et 1 Invité sur ce sujet

Develog

  • Full Member
  • ***
  • Messages: 100
    • Voir le profil
    • E-mail
[Résolu] Boutons à la même position
« le: Juillet 26, 2017, 07:16:36 pm »
Bonjour,

Je me retrouve face à un problème, je dispose de deux boutons, qui sont les deux à la même position x/y. Le fonction attendu est le suivant : Si j'appuie sur le premier bouton, le second devient cliquable, puis le second effectue une action quelconque.
À savoir que j'ai une classe bouton, avec une fonction toute simple pour vérifier si le bouton (rectangleShape) est cliqué.

bool Button::isClicked(Event *event, Vector2f *worldPos)
{
    if((event->type == Event::MouseButtonPressed) && (event->mouseButton.button == Mouse::Left) && (button_GB.contains(worldPos->x, worldPos->y)))
    {
        return true;
    }
    else
    {
        return false;
    }
}

Et donc, dans le fonctionnement, j'ai une variable qui passe à true si le premier bouton est cliqué. Et ensuite j'ai une condition avec la fonction juste au dessus et avec la variable précédente :

if(button1[i].isClicked(event, worldPos))
{
      variable2 = true;
}
if(button2[i].isClicked(event, worldPos) && variable2)

Et je fais ça pour les deux boutons, mais si j'appuie sur le premier, je passe directement à la dernière action, et je ne vois pas le second bouton (le clic se fait sur les deux directements). J'espère avoir été suffisament clair sur l'explication.

Pour passer outre ce problème, j'ai pensé à laisser un petit délai. Mais rien n'y fait, cela change rien.

Auriez vous une idée de comment contrer ce soucis ? Je demande pas forcement du code, juste une piste.

Merci d'avance
« Modifié: Août 02, 2017, 04:40:36 pm par Develog »

kimci86

  • Full Member
  • ***
  • Messages: 128
    • Voir le profil
Re: Boutons à la même position
« Réponse #1 le: Juillet 26, 2017, 11:03:27 pm »
Bonjour,
Si je comprends bien, lors d'un clic sur les boutons, le test sur le premier bouton est vérifié et donc variable2 devient true. Juste après, le test sur le deuxième bouton est vérifié aussi (comme il est à la même position que le premier bouton) et variable2 est vrai comme on vient de l'affecter, donc l'action associée au deuxième bouton est effectuée.
Je vois plusieurs solutions:
- Faire le test sur le deuxième bouton avant celui sur le premier bouton.
- Utiliser un seul bouton et un booléen qui indique s'il y a déjà été cliqué. Pourquoi avoir deux boutons au même endroit ?
« Modifié: Juillet 26, 2017, 11:05:46 pm par kimci86 »

Develog

  • Full Member
  • ***
  • Messages: 100
    • Voir le profil
    • E-mail
Re: Boutons à la même position
« Réponse #2 le: Juillet 26, 2017, 11:26:38 pm »
Voilà tu as bien compris le fonctionnement. Ta première solution n'est pas possible (je crois), car le premier bouton permet d'afficher d'autres boutons ensuite, là sur le coup j'en ai qu'un seul qui est la position du premier. Et une fois le premier cliqué il disparait (il n'est plus draw) pour laisser place au second bouton. Et j'utilise deux boutons par simplicité. Après ta deuxième méthode est jouable, mais moins pratique d'un point de vue compréhension du code.

Develog

  • Full Member
  • ***
  • Messages: 100
    • Voir le profil
    • E-mail
Re: Boutons à la même position
« Réponse #3 le: Août 02, 2017, 04:40:18 pm »
Problème réglé, merci de ton aide @Kimci86
En jouant avec des booléans j'ai pû régler le soucis.