为什么每444毫秒没有播放我的click.wav?它似乎只是随机播放。
import pygame
pygame.init()
size = (700, 500)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("444ms click")
done = False
clock = pygame.time.Clock()
noise = pygame.mixer.Sound("click.wav")
pygame.time.set_timer(1, 444)
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
if event.type == 1:
noise.play()
clock.tick(60)
pygame.quit()
如果有人知道我怎么能更容易地做到这一点会很好。
谢谢!
@JFSebeastian:这是the code的输出:
447
436
443
430
449
431
448
432
910
7
407
447
442
432
446
431
448
432
450
432
446
472
答案 0 :(得分:0)
使用event.type == pygame.USEREVENT + 1
,否则可能由于其他原因(无论1
事件类型在pygame中对应)生成事件,这就是它显示为随机的原因。
the code的输出显示时间间隔大多为440±10
毫秒,但910
,7
对除外。
±10
毫秒的定时器对于fps=60
来说是正常的。要获得更紧密的时间安排,您可以使用clock.tick()
代替clock.tick(60)
。
910
,7
对建议set_timer()
/ tick()
可能在某处使用time.sleep()
模拟。 time.sleep()
可能睡眠超过指定的时间,这就是计时器可能跳过节拍的原因。尝试不应该睡觉的clock.tick_busy_loop()
,看看是否可以重现跳过。