Python pygame.time.set_timer()事件重置?
我有个小问题 pygame.time.set_timer()是否有某种重置 我让它正常运行,但问题是每当执行某个操作时,我需要计时器重置回0。由于它现在正在运行,计时器将每秒触发movedownauto事件(无论发生什么情况),但我希望它在按下某个键时重置,以便在按下该键后等待一秒钟触发movedownauto事件。 如果可以将某些内容放入if event.type==USEREVENT:section,这将是理想的选择 下面的例子↓Python pygame.time.set_timer()事件重置?,python,timer,pygame,Python,Timer,Pygame,我有个小问题 pygame.time.set_timer()是否有某种重置 我让它正常运行,但问题是每当执行某个操作时,我需要计时器重置回0。由于它现在正在运行,计时器将每秒触发movedownauto事件(无论发生什么情况),但我希望它在按下某个键时重置,以便在按下该键后等待一秒钟触发movedownauto事件。 如果可以将某些内容放入if event.type==USEREVENT:section,这将是理想的选择 下面的例子↓ pygame.time.set_timer(USEREVEN
pygame.time.set_timer(USEREVENT, 1000)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
# Figure out if it was an arrow key. If so
# adjust speed.
if event.key == pygame.K_LEFT:
x_speed = -40
elif event.key == pygame.K_RIGHT:
x_speed = 40
elif event.key == pygame.K_DOWN:
y_speed = 40
# User let up on a key
elif event.type == pygame.KEYUP:
# If it is an arrow key, reset vector back to zero
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_speed = 0
elif event.key == event.key == pygame.K_DOWN:
y_speed = 0
# Move the object according to the speed vector.
x_coord += x_speed
y_coord += y_speed
if event.type == USEREVENT:
movedownauto(screen, x_coord, y_coord)
else:
drawcharacter(screen, x_coord, y_coord)
clock.tick(tickspeed)
pygame.display.flip()
谢谢 如果只想在按键后触发
USEREVENT
一次,请从顶部移除pygame.time.set\u timer(USEREVENT,1000)
行,并在elif event.type==pygame.KEYDOWN:
块中添加pygame.time.set\u timer(USEREVENT,1000,True)
如果将pygame.time.set_timer
的第三个参数设置为True
,则事件将仅添加到事件队列一次(请注意,此功能仅在pygame版本2中可用)
如果您希望USEREVENT
定期发生,并且如果发生KEYDOWN
时只需“重置”计时器,只需移除计时器并再次添加
elif event.type == pygame.KEYDOWN:
pygame.time.set_timer(USEREVENT, 0)
pygame.time.set_timer(USEREVENT, 1000)
...
出于某种原因,计时器只接受两个参数,当我放入
pygame.time.set\u timer(USEREVENT,1000,True)
@abramiddell是的,对不起,第三个参数仅在较新的pygame版本中可用;您可能正在使用版本1.9。为什么pygame删除了Python3上的第三个参数?