gpt4 book ai didi

python - pygame.time.set_timer 困惑?

转载 作者:太空狗 更新时间:2023-10-29 22:11:34 25 4
gpt4 key购买 nike

所以,我有一个问题,无论如何我都不完全理解需要给定时器命令的事件,它没有说在线的任何地方,我搜索了几个小时的地方。所以我只是使用了大多数人似乎使用的“USEREVENT + 1”。我不确定它是否正确,但我的计时器不工作。我使用正确吗?这是我的代码:

nyansecond=462346
nyanint=0
spin=0
aftin=452345

def nyanmusic(nyansecond,nyanint,spin):
if nyanint == 0:
nyansound.play()
nyanint= 1
elif nyanint == 1:
nyansecond = pygame.time.set_timer(USEREVENT+1,7000)
if nyansecond < 200 and spin == 1:
spin = 0
nyansecond = pygame.time.set_timer(USEREVENT+1,7000)
elif nyansecond > 6500 and nyansecond < 100000 and spin == 0:
spin = 1
nyansoundm.play()

return nyansecond,nyanint,spin

然后我将它定义到我实现的第二页上的代码中(工作正常)。它运行 nyansound,但在 6.5 秒(6500 毫秒)后不运行 nyansoundm。我制作这个程序是为了帮助我学习 python 和 pygame 的基础知识,然后再学习更复杂的东西。当我想听 nyan cat 或其他循环歌曲时,我也可以使用它,而不必上 youtube 并浪费宝贵的带宽。不过,请不要担心。

哦,这是我放入循环中的代码,尽管我认为这无关紧要:

#music
nyansecond,nyanint,spin = nyanmusic(nyansecond,nyanint,spin)

最佳答案

让我们回顾一下 pygame.time.set_timer 做:

pygame.time.set_timer(eventid, milliseconds): return None

Set an event type to appear on the event queue every given number of milliseconds. The first event will not appear until the amount of time has passed.
Every event type can have a separate timer attached to it. It is best to use the value between pygame.USEREVENT and pygame.NUMEVENTS.

pygame.USEREVENTpygame.NUMEVENTS是常量( 2432 ),所以参数 eventid你传递给pygame.time.set_timer应该是 24 之间的任意整数和 32 .

pygame.USEREVENT+125 , 所以用起来没问题。

当您调用 pygame.time.set_timer(USEREVENT+1,7000) 时, eventid 为 25 的事件将每 7000 毫秒出现在事件队列中。你没有显示你的事件处理代码,但我猜你没有检查这个事件,你应该这样做。

如您所见,pygame.time.set_timer返回 None , 所以你的线

nyansecond = pygame.time.set_timer(USEREVENT+1,7000)

没有意义,因为 nyansecond永远是None ,因此将它与一个整数进行比较

if nyansecond < 200 ...

毫无意义。


如果您想使用事件队列每 6.5 秒播放一次声音,只需调用 pygame.time.set_timer一次(!):

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

关于python - pygame.time.set_timer 困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com