创建一个按钮来控制pygam中背景音乐的打开和关闭

2024-09-27 07:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的游戏中创建一个按钮,可以控制背景音乐的开关。第一次点击将停止背景音乐,第二次点击可以恢复音乐。现在我的按钮可以控制音乐的开关,但我需要点击多次才能使其工作,似乎每次点击事件都没有捕捉到,下面是我的代码:

 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)

Tags: 代码event游戏playif音乐music事件
2条回答

看起来您有一个pygame.mixer.music.pause(),但是resume没有。我不确定pygame的音乐混音器是如何工作的,但我建议使用一个在单击按钮时更新的标志

music = 0默认情况下,如果单击,则设置music = 1,然后检查if music == 1: pygame.mixer.music.pause()和{}。每次单击按钮时都要进行检查和标记更改。在

J0hn的回答是正确的。定义一个布尔变量(例如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()

相关问题 更多 >

    热门问题