如何在pygame中停止声音?

时间:2017-09-09 13:46:03

标签: python audio pygame

好吧基本上我正在研究这个pygame游戏,我正在使用混音器子模块来发声。但是,在pygame中如果要停止声音,声音必须完成其循环,直到它可以停止。对于我所有的声音,这是可以的,因为它们可以是一个循环的1秒声音。然而,我使用需要在一个循环中不断播放的坠落声音,但是循环只有1秒长的下降声音听起来不是很有效。所以,最终我想知道是否有办法在没有完成一个循环的情况下立即停止7秒的声音循环。

1 个答案:

答案 0 :(得分:3)

根据pygame.mixer的pygame文档

pygame.mixer.pause()

将暂时停止播放所有声道。你可以用它们重新开始播放;

pygame.mixer.unpause()

对于单个声音,虽然它会在完整周期后停止,但您可以立即影响它的音量;

pygame.mixer.Sound.set_volume(0)

所以我首先尝试的是在将音量设置为零的同时停止声音并查看是否能解决您的问题。或者,您可以将调音台拆分为频道,以便更好地控制声音播放,这样您就可以使用

pygame.mixer.Channel.pause()
pygame.mixer.Channel.unpause()

在特定的声音组而不是所有声音上。您可以使用;

创建混音器频道
pygame.mixer.Channel(id)

然后,您可以使用;

在该频道上播放特定声音
pygame.mixer.Channel.play(Sound, loops=0, maxtime=0, fade_ms=0)

这还可以让您更加动态地调整游戏中各种类型声音的级别 - 例如,环境,音乐,天气,声音以及它们如何相互重叠,请记住一个频道只能播放一个一次发出声音。因此,谨慎使用;

free_channel = pygame.mixer.find_channel()
free_channel.play(Sound)

或更简单;

pygame.mixer.find_channel().play(Sound)

除了你的“堕落”之外的所有事情。信道。