我发现了一个解决方案,当您按住某个按键时,精灵会移动。问题在于它强制编写难看的重复代码。我发现的当前解决方案是:pygame - 按住按钮
for event in pygame.event.get():
if event.type == KEYDOWN:
keystate = pygame.key.get_pressed()
while keystate[K_RIGHT]:
screen.fill((255,255,255))
pygame.event.get()
for sprite in sprites:
rimage = sprite[1].getimage()
if sprite[2] is None:
x+=3
sprite[1].update(time)
screen.blit(rimage, (x,y))
if sprite[1].isfinished() == True:
sprite[1].reset()
last_dir = "right"
if x >= screen_width - rimage.get_width():
x = screen_width - rimage.get_width()
#update player sprite movement
#update player sprite animation
#update rest of game map
keystate = pygame.key.get_pressed()
time = pygame.time.get_ticks()
pygame.display.update()
问题是,while keystate块。必须对每个方向重复一次,并且游戏世界需要在每个块中更新。这是五个地方需要重复相同的代码.... 4个方向加上,如果没有按下一个键。我可以将它包装在一个函数中,但我想知道是否有更好的方法来处理在pygame中按住按钮。
您忘记了重置方向回到(0,0) –
您是绝对正确的,已更新。 – pmoleri
是的,但我认为keystate是不同的,只是检测到一个按键。我正在检测按钮被按下。这就是为什么在keystate时有一个循环:按住按钮的同时记录方向?我如何知道退出循环?循环是必要的吗? –