mixer模块主要用于加载和播放声音。在pygame中,声音主要用Sound对象来表示,所以说mixer模块实现声音的播放、暂停和一些其他的功能,也就是通过mixer模块中的一些函数来实现。
# 初始化mixer模块 pygame.mixer.init() # 设置mixer模块的参数 pygame.mixer.pre_init() # 取消初始化mixer模块 pygame.mixer.quit() # 判断mixer模块是否初始化 pygame.mixer.get_init() # 停止所有声道声音的播放 pygame.mixer.stop() # 暂停所有声道声音的播放 pygame.mixer.pause() # 恢复声音的播放 pygame.mixer.unpause() # 在结束前淡出声音 pygame.mixer.fadeout() # 设置播放的通道数 pygame.mixer.set_num_channels() # 获取当前播放声音的通道数 pygame.mixer.get_num_channels() # 设置保留通道的数量,如果声音在保留的通道上播放,那么将不会停止 pygame.mixer.set_reserved() # 查找未使用的频道 pygame.mixer.find_channel() # 判断mixer是否混合各个声道 pygame.mixer.get_busy() # 获取mixer的SDL版本 pygame.mixer.get_sdl_mixer_version() # 根据文件或者缓冲区创建一个Sound对象 pygame.mixer.Sound() # 创建一个用于控制播放的Channel对象 pygame.mixer.Channel()
讯享网
创建Sound对象有多个方法。
讯享网pygame.mixer.Sound(filename) pygame.mixer.Sound(file=filename) pygame.mixer.Sound(file=pathlib_path) pygame.mixer.Sound(buffer) pygame.mixer.Sound(buffer=buffer) pygame.mixer.Sound(object) pygame.mixer.Sound(file=object) pygame.mixer.Sound(array=object)
对于某个Sound对象,pygame中的mixer模块提供了相应的控制方法。
# 根据文件或者缓冲区创建一个Sound对象 sound = pygame.mixer.Sound() # 声音的播放,在可用通道上强制选择一个通道进行播放 # 参数loops表示播放后重复的次数,为1表示播放结束后再重复播放一次,为0表示不重复,为-1表示重复无限次 # 参数maxtime表示在给定的时间后停止播放,单位为毫秒,0表示不停止播放 # 参数fade_ms表示声音淡入淡出的时间,单位为毫秒,0表示不进行淡入淡出 sound.play(loops=0, maxtime=0, fade_ms=0) # 声音的停止 sound.stop() # 声音淡出后停止的时间 sound.fadeout(time=2000) # 设置音量,值在0.0-1.0之间浮动 sound.set_volume(value=0.5) # 获取音量 sound.get_volume() # 计算声音播放的次数 sound.get_num_channels() # 获取声音的长度,单位为秒 sound.get_length() # 获取声音的字符串副本 sound.get_raw()
创建Channel对象,通过
pygame.mixer.Channel(id)
讯享网# 声音在某个通道的播放 channel.play(sound, loops=0, maxtime=0, fade_ms=0) # 声音在某个通道停止播放 channel.stop() # 声音在某个通道上暂停播放 channel.pause() # 声音在某个通道上恢复播放 channel.unpause() # 声音在某个通道淡出后停止的时间 channel.fadeout(time=2000) # 设置某个通道音量,值在0.0-1.0之间浮动 # 如果某个Channel对象和某个Sound对象都通过set_volume(0.5)设置过音量,那么声音在这个通道上播放的音量为0.5*0.5 channel.set_volume(value=0.5) # 获取某个通道的音量 channel.get_volume() # 判断通道是否处于活动状态 channel.get_busy() # 获取当前的声音,返回一个Sound对象 channel.get_sound() # 将另外一个Sound对象送入当前的队列中,当前Sound对象播放完毕后才播放另外一个Sound对象 channel.queue(sound) # 返回待播放的Sound队列 channel.get_queue() # 在播放停止时,向pygame中的事件队列中发送一个时间,可以通过pygame.event.get()获取 channel.set_endevent() # 获取事件的类型 channel.get_endevent()
也可以通过mixer模块中的music子模块来播放、暂停、停止音乐。
| 函数 | 描述 |
|---|---|
| pygame.mixer.music.load | 加载音乐文件进行播放 |
| pygame.mixer.music.unload | 卸载当前加载的音乐以释放资源 |
| pygame.mixer.music.play | 开始播放音乐流 |
| pygame.mixer.music.rewind | 重新开始音乐 |
| pygame.mixer.music.stop | 停止音乐播放 |
| pygame.mixer.music.pause | 暂时停止音乐播放 |
| pygame.mixer.music.unpause | 恢复暂停的音乐 |
| pygame.mixer.music.fadeout | 淡出后停止音乐播放 |
| pygame.mixer.music.set_volume | 设置音乐音量 |
| pygame.mixer.music.get_volume | 获取音乐音量 |
| pygame.mixer.music.get_busy | 检查音乐流是否正在播放 |
| pygame.mixer.music.set_pos | 设置播放位置 |
| pygame.mixer.music.get_pos | 获取音乐播放时间 |
| pygame.mixer.music.queue | 排队一个声音文件以跟随当前 |
| pygame.mixer.music.set_endevent | 让音乐在播放停止时发送事件 |
| pygame.mixer.music.get_endevent | 获取播放停止时频道发送的事件 |

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/40817.html