Sie nicht Code zeigen, haben aber ich denke, man pygame.mouse.get_pressed()
verwenden, die True
alles gibt die Zeit, wenn Sie den Knopf gedrückt halten. Und das kann dein Problem sein.
Sie können eines von zwei Dingen tun:
Verwendung event.MOUSEBUTTONDOWN
, die nur einmal erstellt wird - wenn die Taste Änderungszustand von not-pressed
in pressed
.
Oder:
Gebrauch zusätzliche Variable, die pygame.mouse.get_pressed()
aus vorherigen Rahmen remeber wird. Und dann vergleichen, wenn jetzt Taste gedrückt wird, aber im vorherigen Frame nicht gedrückt wurde, dann Element zur Liste hinzufügen.
EDIT: alter Code aus verschiedener Frage, die event.MOUSEBUTTONDOWN
verwendet Farbe zu ändern.
#!/usr/bin/env python
# http://stackoverflow.com/questions/33856739/how-to-cycle-3-images-on-a-rect-button
import pygame
# - init -
pygame.init()
screen = pygame.display.set_mode((300,200))
# - objects -
# create three images with different colors
images = [
pygame.Surface((100,100)),
pygame.Surface((100,100)),
pygame.Surface((100,100)),
]
images[0].fill((255,0,0))
images[1].fill((0,255,0))
images[2].fill((0,0,255))
images_rect = images[0].get_rect()
# choose first image
index = 0
# - mainloop -
running = True
while running:
# - events -
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1 and images_rect.collidepoint(event.pos):
# cycle index
index = (index+1) % 3
# - draws -
screen.blit(images[index], images_rect)
pygame.display.flip()
# - end -
pygame.quit()
GitHub: furas/python-examples/pygame/button-click-cycle-color
Zeigen Sie uns Ihren Code. – DyZ
Wo ist dein Code? –
Vielleicht können Sie 'set()' verwenden? – ADR