Ustaw timer, gdy po raz pierwszy do umieszczenia UserEvent na kolejki zdarzeń pygame i ustawić zmienną na 1, aby wskazać kliknięcie myszą przycisku. Gdy pojawi się drugie kliknięcie, sprawdź zmienną i wyłącz obiekt zdarzenia licznika czasu. Sprawdź, czy w kolejce pojawi się komunikat userevent, ponieważ oznacza to, że upłynął limit czasu. zobaczyć ten piękny odpowiedź uzyskać więcej informacji: Move an object every few seconds in Pygame
Oto kod, wymień połączenia double_click()
z własnego wywołania funkcji:
def run():
global clock, double_click_event, timer
double_click_event = pygame.USEREVENT + 1
timer = 0
while True:
clock.tick(60)
check_events()
frame.update()
screen.blit(frame, (0,0))
pygame.display.flip()
def check_events():
global dispatcher, double_click_event, timer
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
if timer == 0:
pygame.time.set_timer(double_click_event, 500)
timerset = True
else:
if timer == 1:
pygame.time.set_timer(double_click_event, 0)
double_click()
timerset =False
if timerset:
timer = 1
return
else:
timer = 0
return
elif event.type == double_click_event:
# timer timed out
pygame.time.set_timer(double_click_event, 0)
timer = 0
print "evt = dble click"