Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: Rodd le Janvier 31, 2013, 12:17:37 am

Titre: [Résolu] Questions sur move() et la récupération de pos de souris.
Posté par: Rodd le Janvier 31, 2013, 12:17:37 am
Bonsoir à tous !

Je n'ai pas trouvé de section "Question/réponse" donc je l'ai mis plutôt ici.

Comment récupérez-vous la position de la souris généralement ? D'habitude je fondais mon petit programme avec l'utilisation de sf::Mouse::getPosition(app).x et sf::Mouse::getPosition(app).y mais j'ai vu récemment qu'on pouvait utiliser app.getInput().getMouseX() et app.getInput().getMouseY() pour sf::RenderWindow app .. Quel est le mieux ? Quel est la différence entre les deux ? Existe-il un décalage entre un evenement et la position de la souris ? Si oui peut-on récupérer la position de la souris lors de l'event via une commande du style : event.mouse.getPosition() ?


Dans le même genre de question, quel est la différence entre un .move() et un .setPosition() ? Est-ce que le .move() se traduit à utiliser un .setPosition() ou l'inverse l'un par rapport à l'autre ? Quel est le mieux à utiliser niveau performance si on a le choix entre les deux ?

Merci beaucoup de vos éclaircissements ! Et longue vie à SFML avec lequel je m'amuse tellement !  :D
Titre: Re : Questions sur move() et la récupération de pos de souris.
Posté par: Rodd le Janvier 31, 2013, 12:27:01 am
Oh, je crois avoir trouvé la réponse pour ma première question..

via un event.mouseButton.x et event.mouseButton.y ? Non ?

Par contre je n'ai pas trouvé de réponse pour ma deuxieme question :) Merci!
Titre: Re : Questions sur move() et la récupération de pos de souris.
Posté par: G. le Janvier 31, 2013, 05:29:19 am
move déplace le sprite du nombre de pixels que tu lui fournis.
setPosition positionne le sprite aux coordonnées spécifiées.

Par exemple pour un sprite dont la position est x: 10 et y: 20, si tu fais un move(5, 3), le sprite se retrouve en x: 15 et y: 13.
Alors que si tu fais un setPosition(5, 3) bah le sprite se retrouve en x: 5 et y: 3.

Tu peux mater les sources pour voir le code des 2 méthodes : https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/Transformable.cpp
move appelle setPosition, niveau perf l'un ou l'autre c'est du pareil au même quoi. ^^
Titre: Re : Questions sur move() et la récupération de pos de souris.
Posté par: Laurent le Janvier 31, 2013, 08:09:45 am
Citer
Comment récupérez-vous la position de la souris généralement ? D'habitude je fondais mon petit programme avec l'utilisation de sf::Mouse::getPosition(app).x et sf::Mouse::getPosition(app).y mais j'ai vu récemment qu'on pouvait utiliser app.getInput().getMouseX() et app.getInput().getMouseY() pour sf::RenderWindow app .. Quel est le mieux ? Quel est la différence entre les deux ?
Le premier est SFML 2.0, le second SFML 1.6. Donc pas de "mieux", pas de différence, juste pas la même version.

Citer
Existe-il un décalage entre un evenement et la position de la souris ?
Le décalage est celui qui existe entre le moment où l'évènement est généré, et celui où tu le traites. Donc pas grand chose si ta boucle principale tourne suffisamment vite. Mais comme tu l'as vu, tu peux récupérer les coordonnées de la souris directement depuis l'évènement ; de manière générale, les évènements sont faits pour être indépendants des entrées temps-réel, il ne faut pas mélanger les deux.

Citer
Si oui peut-on récupérer la position de la souris lors de l'event via une commande du style : event.mouse.getPosition() ?
Oui, et on peut aussi lire les tutoriels ;)
Titre: Re : Re : Questions sur move() et la récupération de pos de souris.
Posté par: Rodd le Janvier 31, 2013, 11:45:54 am
Oui, et on peut aussi lire les tutoriels ;)

Gna gna gna :p J'avais loupé l'étape event des tutos !! :D



Merci de vos réponses