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

Auteur Sujet: Création d'événement pour des boutons  (Lu 627 fois)

0 Membres et 1 Invité sur ce sujet

XylaTV

  • Invité
Création d'événement pour des boutons
« le: Juillet 09, 2022, 05:53:38 pm »
Bonjour, j'utilise la SFML pour créer des boutons. Avec un seul bouton mon code fonctionne bien mais avec deux j'ai un problème : mon curseur bug et je crois que deux actions se mélangent entre elles :/ Dans mon code je veux que quand l'utilisateur survole un bouton le curseur change mais avec mon code le curseur ne fait que de changer quand je bouge la souris.

Voici mon code :
case sf::Event::MouseMoved:
                {
                    sf::Vector2i mousePos = sf::Mouse::getPosition(window);
                    sf::Vector2f mousePosF(static_cast<float>(mousePos.x), static_cast<float>(mousePos.y));

                    if (companyButtonSprite.getGlobalBounds().contains(mousePosF)) // Bouton 1
                    {
                        companyButtonSprite.setColor(sf::Color(255, 255, 255, 255));
                        window.setMouseCursor(handCursor);
                    }
                    else
                    {
                        companyButtonSprite.setColor(sf::Color(255, 255, 255, 215));
                        window.setMouseCursor(arrowCursor);
                    }

                    if (soundButtonSprite.getGlobalBounds().contains(mousePosF)) // Bouton 2
                    {
                        window.setMouseCursor(handCursor);
                    }
                    else
                    {
                        window.setMouseCursor(arrowCursor);
                    }
                }
                break;

Merci de votre aide ;)

FatihLD

  • Newbie
  • *
  • Messages: 19
  • A dix-mille pieds sous l'océan
    • Voir le profil
    • E-mail
Re: Création d'événement pour des boutons
« Réponse #1 le: Août 21, 2022, 01:19:24 pm »
Salut,

Le soucis avec ton code est que lorsqu'une des deux conditions échoue, ton curseur est réinitialisé. Pour éviter ça tu peux utiliser un "if/else if". Si t'as un grand nombre de boutons par la suite tu peux généraliser le tout en les mettant dans un conteneur et en itérant dessus.

D'ailleurs, tu peux convertir ton Vector2i en Vector2f en utilisant le constructeur de la classe directement :
sf::Vector2f mousePosF(mousePos);

squidblack

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
Re: Création d'événement pour des boutons
« Réponse #2 le: Mars 06, 2024, 07:59:13 am »
Salut,

Le soucis avec ton code est que lorsqu'une des deux conditions échoue, ton curseur est réinitialisé. Pour éviter ça tu peux utiliser un "if/else if". Si t'as un grand nombre de boutons par la suite tu peux généraliser le tout en les mettant dans un conteneur et en itérant dessus.

D'ailleurs, tu peux convertir ton Vector2i en Vector2f en utilisant le constructeur de la classe directement :
sf::Vector2f mousePosF(mousePos);
J'ai essayé et ça marche.