La position de la souris et cliquez sur détecter dans la sfml
int Game::MouseOnDot(float x, float y, RenderWindow &renderWindow) {
Rect<int> Dot;
Event event;
Dot.left = x;
Dot.top = y;
Dot.width = 20;
Dot.height = 20;
while (renderWindow.pollEvent(event)) {
float Mx = sf::Mouse::getPosition().x;
float My = sf::Mouse::getPosition().y;
if (event.type == Event::MouseButtonReleased&&Mx > x && Mx < Dot.height && My > y && My < Dot.width){
return 1;
}
else
return 0;
}
}
Je ne sais pas pourquoi cela ne fonctionne pas si le bouton est pressé sur le point retourne 1 qui racontent une autre fonction pour fermer la fenêtre. Suis-je en train de faire quelque chose de mal sur la position de la souris?
while (renderWindow.isOpen()) {
processEvents(renderWindow);
float Time = clock.getElapsedTime().asSeconds();
float TimeDifference = Time - LastUpdateTime;
if (TimeDifference >= UpdateTime) {
processEvents(renderWindow);
y += 3;
if (y <= 770) {
if(Game::MouseOnDot(x, y, renderWindow)==1)
renderWindow.close();
Game::Spawn(renderWindow, Green_Dots, x, y);
LastUpdateTime = Time;
return;
Ne fonctionnent toujours pas je colle ici la partie lors de la MouseOnDot reutrns 0 ou 1. Il ne sera pas fermer les fenêtres et je ne sais pas pourquoi??
Vous devez vous connecter pour publier un commentaire.
À l'aide de
sf::Mouse::getPosition().x
renvoie la position par rapport à l'ordinateur de bureau, si vous le voulez, par rapport à votre renderWindow que vous devez faire:
sf::Mouse::getPosition(renderWindow).x
puis Attila est exactement droit sur la souris et le point de comparaison 🙂
Je pense que votre problème est que vous comparez la position de la coordonnée x et la hauteur. Vous avez besoin de comparer à x et x+hauteur (de même pour y coordonner/largeur)
Essayer:
if (y <= 770)
branche? D'autre part, siMouseOnDot()
renvoie 0 ou 1, vous appelezGame::Spawn(renderWindow,...)
quelle que soit la il est en dehors de laif
branche -- je suppose que leSpawn()
va créer une nouvelle fenêtre pour vous