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

Author Topic: Création d'événement pour des boutons  (Read 9540 times)

0 Members and 1 Guest are viewing this topic.

XylaTV

  • Guest
Création d'événement pour des boutons
« on: July 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
  • *
  • Posts: 19
  • A dix-mille pieds sous l'océan
    • View Profile
    • Email
Re: Création d'événement pour des boutons
« Reply #1 on: August 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
  • *
  • Posts: 1
    • View Profile
Re: Création d'événement pour des boutons
« Reply #2 on: March 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.

newlyplay

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: Création d'événement pour des boutons
« Reply #3 on: August 14, 2024, 09:31:22 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.
slice masters
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 fonctionne !

 

anything