让我们回顾一下
pygame.time.set_timer:
pygame.time.set_timer(eventid,ms):返回无
设置事件类型,使其每隔给定的毫秒数出现在事件队列中。在经过一定时间之前,不会出现第一个事件。
每个事件类型都可以附加一个单独的计时器。最好使用pygame.USEREVENT和pygame.NUMEVENTS之间的值。
pygame.USEREVENT和
pygame.NUMEVENTS是常数(
24和
32),因此
eventid您传递给的参数
pygame.time.set_timer应该是
24和之间的任何整数
32。
pygame.USEREVENT+1是
25,因此可以使用。
当您呼叫时
pygame.time.set_timer(USEREVENT+1,7000),
25每隔7000毫秒就会将事件编号为eventid的事件显示在事件queue列中。您没有显示事件处理代码,但是我想您不检查此事件,而应该这样做。
如您所见,
pygame.time.set_timerreturn
None,所以您的行
nyansecond = pygame.time.set_timer(USEREVENT+1,7000)
没有意义,因为
nyansecond它将始终为
None,因此将其与整数进行比较
if nyansecond < 200 ...
是没有意义的。
如果要使用事件队列每6.5秒播放一次声音,请
pygame.time.set_timer一次调用simpy (!):
PLAYSOUNDEVENT = USEREVENT + 1...pygame.time.set_timer(PLAYSOUNDEVENT, 6500)
并在主循环中检查此事件的事件队列:
while whatever: # main loop ... # event handling if pygame.event.get(PLAYSOUNDEVENT): # check event queue contains PLAYSOUNDEVENT nyansoundm.play() # play the sound



