- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以,我有一个问题,无论如何我都不完全理解需要给定时器命令的事件,它没有说在线的任何地方,我搜索了几个小时的地方。所以我只是使用了大多数人似乎使用的“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.USEREVENT
和 pygame.NUMEVENTS
是常量( 24
和 32
),所以参数 eventid
你传递给pygame.time.set_timer
应该是 24
之间的任意整数和 32
.
pygame.USEREVENT+1
是25
, 所以用起来没问题。
当您调用 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/
我正在使用 Pygame 和 Python 制作游戏,这是 Asteroids 的一种形式。每隔 10 秒,如果屏幕上同时显示的小行星不超过 10 颗,游戏就会生成另一颗小行星。当我查看有关如何实现它
这个问题在这里已经有了答案: Countdown timer in Pygame (8 个答案) How do I use a PyGame timer event? How to add a cl
我有一个小问题... pygame.time.set_timer() 是否有某种重置? 我已经让它运行正常,但问题是我需要在执行特定操作时将计时器重置回 0。由于它现在正在运行,计时器将每秒触发一次
所以,我有一个问题,无论如何我都不完全理解需要给定时器命令的事件,它没有说在线的任何地方,我搜索了几个小时的地方。所以我只是使用了大多数人似乎使用的“USEREVENT + 1”。我不确定它是否正确,
我是 python 和 pygame 的新手,正在尝试自学,所以我自然是个菜鸟。现在,我正在尝试编写某种“过场动画”(它只是一个黑屏,带有声音效果和在特定时间播放和显示的文本),可以通过按转义键随时跳
我正在尝试使用新的 GrantPermissionRule这是最新支持库的一部分。 在我的 list 中,我声明如下: 在我的代码中,我调用: @Rule public GrantPermissio
我目前正在尝试使用 pygame 制作闪电动画。我计划使用 pygame.timer.set_timer() 模块每 3 秒发生一次闪电动画,因为我将发生独立于闪电动画的其他动画。 为了简单起见,我用
我是一名优秀的程序员,十分优秀!