<p>J0hn的回答是正确的。定义一个布尔变量(例如<code>music_paused = False</code>),当用户单击按钮时切换它,并调用<code>pygame.mixer.music.pause</code>停止音乐,调用<code>pygame.mixer.music.unpause</code>恢复音乐流的播放。在</p>
<p>我还建议在事件循环(<code>for event in pygame.event.get():</code>)中执行碰撞检查,因为每个<code>pygame.MOUSEBUTTONDOWN</code>事件只应单击一次按钮。<code>pygame.mouse.get_pressed()</code>只要按下鼠标键,就会一直单击“音乐”按钮。在</p>
<pre><code>import pygame as pg
pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray12')
BLUE = pg.Color('dodgerblue1')
pg.mixer.music.load('your_music_file.ogg')
pg.mixer.music.play(-1)
button = pg.Rect(100, 150, 90, 30)
music_paused = False
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
elif event.type == pg.MOUSEBUTTONDOWN:
if button.collidepoint(event.pos):
# Toggle the boolean variable.
music_paused = not music_paused
if music_paused:
pg.mixer.music.pause()
else:
pg.mixer.music.unpause()
screen.fill(BG_COLOR)
pg.draw.rect(screen, BLUE, button)
pg.display.flip()
clock.tick(60)
pg.quit()
</code></pre>