Pygame音乐暂停/取消暂停切换

时间:2014-08-09 17:07:50

标签: python pygame toggle keypress

好的,这是我的代码:

def toggleMusic():

    if pygame.mixer.music.get_busy():
        pygame.mixer.music.pause()

    else:
        pygame.mixer.music.unpause()

---事件处理---

如果按'm',它应该切换音乐是否暂停而不是暂停

toggleMusic()

它可以暂停音乐而不是取消暂停,任何解释?

3 个答案:

答案 0 :(得分:1)

有同样的问题。对于其他人的参考,我的解决方案是使用一个简单的类。

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

答案 1 :(得分:0)

它不会取消音乐,因为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 :(得分: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()