好吧,基本上我正在开发这个 pygame 游戏,我正在使用混音器子模块来处理声音。然而,在 pygame 中,如果你想停止声音,声音必须完成它的循环,直到它可以停止。对于我所有的声音,这没问题,因为它们可以是循环的 1 秒声音。然而,我使用的是一个需要不断循环播放的下落音效,但是循环一个只有1秒长的下落音效听起来效果不是很好。所以,最终我想知道是否有一种方法可以在不完成一个循环的情况下立即停止 7 秒的声音循环。
最佳答案
根据 pygame.mixer 的 pygame 文档
pygame.mixer.pause()
将暂时停止所有声道的播放。您可以使用以下命令重新启动它们;
pygame.mixer.unpause()
对于单个声音,虽然它会在一个完整的循环后停止,但您可以立即影响它的音量;
pygame.mixer.Sound.set_volume(0)
所以我首先尝试的是在将音量设置为零的同时停止声音,看看是否能解决您的问题。或者,您可以将混音器分成多个 channel ,以便更好地控制声音播放,这将使您能够使用
pygame.mixer.Channel.pause()
pygame.mixer.Channel.unpause()
针对特定的声音组而不是所有声音。您创建一个混音器 channel ;
pygame.mixer.Channel(id)
然后您可以在该 channel 上播放特定的声音;
pygame.mixer.Channel.play(Sound, loops=0, maxtime=0, fade_ms=0)
这还可以让您更动态地调整游戏中各种声音的级别 - 例如,环境、音乐、天气、声音以及它们如何相互重叠,请记住一个 channel 只能播放一个一次发出声音。因此,可谨慎使用;
free_channel = pygame.mixer.find_channel()
free_channel.play(Sound)
或者更简单地说;
pygame.mixer.find_channel().play(Sound)
除了“下降” channel 之外的所有内容。
关于python - 如何在pygame中停止声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46131369/