gpt4 book ai didi

python - 在pygame中创建一个按钮来控制背景音乐的开启和关闭

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:27 25 4
gpt4 key购买 nike

我想在我的游戏中创建一个可以控制背景音乐打开和关闭的按钮。第一次点击会停止背景音乐,第二次点击可以恢复音乐。现在我的按钮可以控制音乐的开和关了,但是我需要点击多次才能让它起作用,好像不是每次都捕获到点击事件,这是我的代码:

 for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if 20 + 50 > mouse_position[0] > 20 and 20 + 20 > mouse_position[1] > 20:
play_music = not play_music
if play_music:
pygame.mixer.music.unpause()
else:
pygame.mixer.music.pause()

pygame.display.flip()
clock = pygame.time.Clock()
clock.tick(15)

最佳答案

J0hn 的回答是正确的。定义一个 bool 变量(例如 music_paused = False),当用户点击按钮时切换它并调用 pygame.mixer.music.pause 停止音乐和 pygame.mixer.music.unpause 恢复音乐流的播放。

我还建议在事件循环中进行碰撞检查(for event in pygame.event.get():),因为每个 pygame.MOUSEBUTTONDOWN 按钮应该只被点击一次 事件。 pygame.mouse.get_pressed() 将在鼠标按钮按下时持续点击音乐按钮。

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

关于python - 在pygame中创建一个按钮来控制背景音乐的开启和关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51329797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com