Я обычно даю своим кликабельным объектам функцию щелчка, как в вашем примере. Я поместил все эти объекты в список для упрощения итераций при вызове функций щелчка.
при проверке того, для какой кнопки мыши вы нажимаете, используйте свойство кнопки события.
import pygame
from pygame.locals import * #This lets you use pygame's constants directly.
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN: #Better to seperate to a new if statement aswell, since there's more buttons that can be clicked and makes for cleaner code.
if event.button == 1:
for object in clickableObjectsList:
object.clickCheck(event.pos)
Я бы сказал, что это рекомендуемый способ сделать это. Клик регистрируется только один раз, поэтому он не скажет вашему спрайту, если пользователь «перетаскивает» кнопку. Это может быть легко сделано с логическим значением, которое установлено в true с событием MOUSEBUTTONDOWN, и false в MOUSEBUTTONUP Имеются «перетаскиваемые» объекты, повторяемые для активации их функций ... и т. Д.
Однако, если вы не хотите использовать обработчик событий, вы можете разрешить функции обновления проверять ввод с помощью:
pygame.mouse.get_pos()
pygame.mouse.get_pressed().
Это плохая идея для больших проектов, так как это может привести к трудностям поиска ошибок. Лучше просто хранить события в одном месте. Меньшие игры, такие как простые аркадные игры, могут иметь больше смысла, используя стиль зондирования.