Обычно я даю своим интерактивным объектам функцию щелчка, как в вашем примере. Я поместил все эти объекты в список, чтобы упростить итерацию, когда должны быть вызваны функции щелчка.
при проверке того, какую кнопку мыши вы нажимаете, используйте свойство кнопки события.
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().
Это плохая идея для больших проектов, так как это может создать трудно найти ошибки. Лучше просто хранить события в одном месте. Тем не менее, небольшие игры, такие как простые аркадные игры, могут иметь больше смысла, используя стиль зондирования.
person
Zoomulator
schedule
25.12.2008