Pygame音乐暂停/恢复切换
好的,这是我的代码:
def toggleMusic():
if pygame.mixer.music.get_busy():
pygame.mixer.music.pause()
else:
pygame.mixer.music.unpause()
---事件处理---
如果按下'm'键,它应该切换音乐的暂停和播放状态。
toggleMusic()
它可以暂停音乐,但不能恢复播放,有什么解释吗?
3 个回答
0
这个挺不错的,我用它来做游戏。
来源 https://youtu.be/kzTloDq1FiQ
is_paused = False
def toggle_pause():
global is_paused
if is_paused == True:
is_paused = False
else:
is_paused = True
wn.listen()
wn.onkeypress(toggle_pause, " ")
while True:
if not is_paused:
bob.fd(1)
bob.lt(1)
else:
wn.update()
1
音乐没有恢复播放是因为 pygame.mixer.music.pause()
这个命令并不会改变 pygame.mixer.music.get_busy()
的状态。
如果你想实现你想要的效果,你需要自己维护一个变量,用来记录音乐是暂停还是播放状态。你可以在一个类里做到这一点:
class mixerWrapper():
def __init__(self):
self.IsPaused = False
def toggleMusic(self):
if self.IsPaused:
pygame.mixer.music.unpause()
self.IsPaused = False
else:
pygame.mixer.music.pause()
self.IsPaused = True
2
我也遇到过同样的问题。为了帮助其他人,我的解决办法是使用一个简单的类。
class Pause(object):
def __init__(self):
self.paused = pygame.mixer.music.get_busy()
def toggle(self):
if self.paused:
pygame.mixer.music.unpause()
if not self.paused:
pygame.mixer.music.pause()
self.paused = not self.paused
# Instantiate.
PAUSE = Pause()
# Detect a key. Call toggle method.
PAUSE.toggle()