Comment dois-je répondre à des clics de souris sur les images-objets dans PyGame?
Qu'est-ce que la manière canonique de faire vos sprites répondre aux clics de la souris dans PyGame ?
Voici quelque chose de simple, dans ma boucle d'événement:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit_game()
[...]
elif ( event.type == pygame.MOUSEBUTTONDOWN and
pygame.mouse.get_pressed()[0]):
for sprite in sprites:
sprite.mouse_click(pygame.mouse.get_pos())
Quelques questions à ce sujet:
- Est-ce la meilleure façon de répondre aux clics de la souris ?
- Que si la souris reste enfoncé sur le sprite pour un certain temps ? Comment puis-je faire un événement unique ?
- Est-ce une façon raisonnable d'informer tous mes sprites du clic ?
Merci d'avance
OriginalL'auteur Eli Bendersky | 2008-12-19
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude de donner mon objet cliquable une fonction de clic, comme dans votre exemple. J'ai mis tous ces objets dans une liste, pour faciliter l'itération lorsque les fonctions de clic sont à être appelé.
lors de la vérification pour laquelle bouton que vous appuyez sur, utiliser le bouton de la propriété de l'événement.
Je dirais que c'est la meilleure façon de le faire. Le clic s'inscrit uniquement une fois, alors il l'habitude de dire à votre sprite si l'utilisateur est "traîner" avec un bouton. Qui peut facilement être fait avec un booléen qui vaut vrai avec le MOUSEBUTTONDOWN événement, et de faux avec la MOUSEBUTTONUP. Le "draggable" objets itéré pour l'activation de leurs fonctions... et ainsi de suite.
Toutefois, si vous ne voulez pas utiliser un gestionnaire d'événements, vous pouvez laisser une mise à jour pour le contrôle de fonction pour l'entrée:
C'est une mauvaise idée pour les grands projets, car il peut créer dur de trouver des bugs. Mieux les garder événements en un seul endroit. Petits jeux, comme de simples jeux d'arcade pourrait faire plus de sens à l'aide de la détection de style.
event.button == 1
partie, n'est-il pas constant plutôt qu'explicite 1 dans PyGame ?Je ne pense pas qu'il ya un besoin pour elle. 1 est toujours le bouton de gauche, 2 au milieu et 3 est le droit. 3 est le droit même sur des souris avec deux boutons seulement.
OriginalL'auteur Zoomulator