【问题标题】:Play Music And Sound Effects On Top Of Each other (PyGame)相互叠加播放音乐和音效(PyGame)
【发布时间】:2019-05-06 04:14:00
【问题描述】:

我想知道是否可以使用 pygame 混音器在不同的声音上播放声音。因此,例如,我会播放安静的背景音乐,然后发生一些事情,并且如果它在顶部播放另一种声音。目前我用这个作为背景音乐:

pygame.mixer.init()
pygame.mixer.music.load("Audio Assets//bob.wav")
pygame.mixer.music.play()

但是,如果我以某种方法播放另一种声音,则背景音乐会完全停止并且不会重新开始。是否可以同时播放两个声音?

编辑:我现在想知道如何在 Tkinter 中显示和图像时播放声音,这是我显示图像的代码:

def one():
    pone = PhotoImage(file="Image Assets//DEAD.gif")
    labelone = Label(root, image=pone)
    labelone.image = pone
    labelone.pack(pady=70)
    labelone.after(2000, labelone.destroy)

如您所见,图像显示出来,然后在 2 秒后销毁。如何在这几秒钟内使用通道和混音器播放音频?

编辑 2:非常简单,我只是将 pygame.mixer.Channel(0).play(pygame.mixer.Sound('sound\gun_fire.wav'), maxtime=600) 放在方法的末尾,它会像显示的图像一样播放。

【问题讨论】:

    标签: python audio pygame mixer


    【解决方案1】:

    为了在音乐上播放音效(或在其他音效上播放音效),您可以使用频道。例如:

    # initialize
    pygame.mixer.pre_init()
    pygame.mixer.init()
    pygame.init()
    
    # start playing the background music
    pygame.mixer.music.load(os.path.join(os.getcwd(), 'sound', 'main_theme.wav'))
    pygame.mixer.music.set_volume(0.3)
    pygame.mixer.music.play(loops=-1)  # loop forever
    

    然后在后面的代码中,就可以通过Channels播放音效了:

    # play a sound on channel 0 with a max time of 600 milliseconds
    pygame.mixer.Channel(0).play(pygame.mixer.Sound('sound\gun_fire.wav'), maxtime=600)
    
    # you can play a longer sound on another channel and they won't conflict
    pygame.mixer.Channel(1).play(pygame.mixer.Sound("sound\death.wav"), maxtime=2000)
    

    有关Channels的更多信息

    如果您想设置单个频道的音量,您可以使用set_volume() 函数:

    channel.set_volume(0.5)  # play at 50% volume
    

    【讨论】:

    • 当我得到它的工作时我会接受答案,我目前不在家,无法测试它,无论如何谢谢。
    • 好吧,我刚回到家,我有一个问题,我在用 Tkinter 显示图像时如何播放声音。我试过了,但只能在显示图像之前和之后播放。我将编辑问题。
    • 我不确定我是否遵循。如果您可以发布有关该问题的更多代码,我可以尝试提供更多帮助
    • 对不起,我没有解释清楚。本质上,我使用 Tkinter 作为我的 GUI,我想使用 PyGame 的音频,因为它看起来最简单。本质上,我想让一张图片显示 2 秒钟,这是我放入 OP 中的代码所做的。现在我想在显示该图片时播放音频。如果仍然不清楚,我不介意发布一个新问题。
    • 哦,nvm,我想通了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多