python - 如何在pygame中停止声音?

标签 python audio pygame

好吧,基本上我正在开发这个 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/

相关文章:

python - 如何将多个python脚本混合成一个shell脚本?

python - 显示直方图条形轮廓

python - 如何使用 pywin32 静音/取消静音?

python - 什么是 PyGame Sprite ,它们有什么作用?

python - 什么时候需要 pygame.init()?

python - 弹丸从曲面弹起-Pygame,Python 3

python - 将动画 Matplotlib 图形保存为 GIF 文件会产生不同外观的绘图

python - 迭代类方法 next() 和 __next__() 有什么用,有什么区别?

java - 手动更改扬声器位置

java - JSyn:两个 channel 上的正弦波