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 ;)
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);
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.
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 (https://slicemasters.co/)
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 !