Forum de la communauté SFML
Général => Suggestions de nouvelles fonctionnalités => Discussion démarrée par: Basta le Octobre 27, 2012, 01:59:29 pm
-
Bonjour,
Tout d'abord : pourquoi le mouse wheel delta n'est pas accessible dans sf::Mouse ?
Je suggère de plus un accès aux évènements suivants depuis une instance de fenêtre :
sf::Event::MouseEntered, sf::Event::MouseLeft, sf::Event::GainedFocus, sf::Event::LostFocus, sf::Event::Resized et sf::Event::Closed
Ceci dans le style :
window.mouseIn(), window.isFocused(), window.isResized(), window.isClosed()
Voilà voilà mais ce n'est qu'un avis de "newbie" :D.
-
Le delta, comme son nom l'indique, n'est qu'une modification, autrement dit, ça indique de combien la molette a tourné, mais elle n'a pas de valeur fixe, voilà pourquoi elle n'est pas disponible dans sf::Mouse.
Ensuite pour les fonctions :
window.mouseIn() : Dans quels cas en as-tu besoin ? Pourquoi ne pas simplement jouer avec un booléen selon les évènements ?
window.isFocused() : Même chose (Bien qu'ici je comprends que les besoins soient plus importants, donc une méthode window.hasFocus() ne serait pas de trop)
window.isResized() : Euh, quand est-ce que cette méthode doit-elle renvoyer true ? Tout le temps à partir du moment où la fenêtre a été redimensionnée jusqu'à l'appel de la méthode ? Les évènements servent à ça.
window.isClosed() : Ah si seulement on pouvait faire la négation de window.isOpen() (http://www.sfml-dev.org/documentation/2.0/classsf_1_1Window.php#a5aa9c2b2b0e51d3423c2b66c80253337)... Oh wait
-
Mais alors comment obtenir le mouse wheel delta à partir de sf::Mouse manuellement ?
Edit : mouseIn() : c'est vrai que l'on peut faire la vérification manuelle facilement
(et que les autres fonctions sont assez accessoires mais me paraissaient plus logiques à utiliser)
-
Mais alors comment obtenir le mouse wheel delta à partir de sf::Mouse manuellement ?
C'est simplement impossible, le seul moyen est d'avoir une variable entière, initialisée à zéro et qui est modifiée à chaque évènement MouseWheelMoved (Si ma mémoire est bonne).
-
Edit : mouseIn() : c'est vrai que l'on peut faire la vérification manuelle facilement
Comme pour les touche touche clavier, pourtant on a bien des isKeyPressed, cette fonction me parait autant justifiée. Pareil pour isFocused. L'autre pourrait renvoyer true quand l'utilisateur attrape un bord de la fenêtre.
-
C'est bien beau de demander plein de choses, mais il faut un minimum me les justifier ;)
Pour moi toutes ces fonctions ne serviraient pas à grand chose. Le fait est que la classe sf::Window pourrait contenir un millier de fonctions ; je ne peux pas toutes les mettre, il faut faire un tri. Alors lancer des noms de nouvelles fonctions comme ça dans le vide, ça n'aura aucune chance de donner quoique ce soit :P
-
Peut-être un module WindowPlus dans Thor?
-
lancer des noms de nouvelles fonctions comme ça dans le vide, ça n'aura aucune chance de donner quoique ce soit :P
Mais je comptais bien ne pas les lancer dans le vide justement, même si j'écris à la légère, sinon je ne les aurais pas postées sur ce forum :P.
-
Mais je comptais bien ne pas les lancer dans le vide justement
Ce que je voulais dire c'est que... c'est ce que tu as fait. J'attends toujours les arguments qui sont censés me convaincre de les ajouter :P
-
les arguments
Alors des arguments, des arguments ... lorsqu'on utilise sf::Mouse sf::Keyboard et sf::Joystick, ces fonctions permettent par exemple de se passer de la boucle des évènement. Pour ce qui est de mouseWheel c'était à peu près dans la même optique, on doit gérer la molette dans une boucle d'évènements alors que l'on utilise une classe sf::Mouse, je trouve que ca fait un peut "je prends les boutons par ci, la molette par là".
Après au niveau technique je ne pense pas que cela puisse apporter quelque chose.
-
Pour ce qui est de mouseWheel c'était à peu près dans la même optique, on doit gérer la molette dans une boucle d'évènements alors que l'on utilise une classe sf::Mouse, je trouve que ca fait un peut "je prends les boutons par ci, la molette par là".
Pour la molette, ça a déjà été discuté de nombreuses fois, et résumé ici une N-ième fois : la molette n'a pas d'état propre, elle peut uniquement indiquer quand on tourne un cran (elle ne peut pas dire "je suis sur la position n° X). Contrairement à un bouton, qui peut dire à tout moment s'il est appuyé ou non.
Je reste ouvert aux discussions concernant les autres fonctions.