Pygame音乐暂停/恢复切换

2 投票
3 回答
8370 浏览
提问于 2025-04-18 16:40

好的,这是我的代码:

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()

撰写回答