pygame 的声音播放
1. sound 对象
在初始化声音设备后就可以读取一个音乐文件到一个 Sound 对象中。pygame.mixer.sound() 接收一个文件名,也可以是一个文件对象,不过这个文件对象必须是 WAV 或者 OGG 文件。
hello_sound = pygame.mixer.sound("hello.ogg") # 建立 Sound 对象
hello_sound.play() # 声音播放一次
一旦这个 Sound 对象出来了,就可以使用 play() 来播放它。play(loop, maxtime) 可以接收两个参数,loop 是重复的次数(取1是两次,注意是重复的次数,而不是播放的次数),-1 意味着无限循环;maxtime 是指多少毫秒后结束。
若不使用任何参数调用,意味着把这个声音播放一次。一旦 play() 方法调用成功,就会返回一个 Channel 对象,否则返回一个 None。
2. music 对象
pygame 中还提供了 pygame.mixer.music 类来控制背景音乐的播放。pygame.mixer.music 用来播放 MP3 和 OGG 文件,不过 MP3 并不是所有的系统都支持(Linux 默认就不支持 MP3 播放)。用户可以用 pygame.mixer.music.load() 加载一个文件,然后使用 pygame.mixer.music.play() 播放,不放的时候就用 stop() 方法停止,当然也有类似录影机上的 pause() 和 unpause() 方法。
# 加载背景音乐
pygame.mixer.music.load("hello.mp3")
pygame.mixer.music.set_volume(music_volume / 100.0)
# 循环播放,从音乐的第30秒开始
pygame.mixer.music.play(-1, 30.0)
在游戏退出事件中加入停止音乐播放的代码:
# 停止音乐播放
pygame.mixer.music.stop()
music 对象提供了丰富的函数方法,下面分别介绍:
-
pygame.mixer.music.load()
功能:加载音乐文件
格式:pygame.mixer.music.load(filename)
-
pygame.mixer.music.play()
功能:播放音乐
格式:pygame.mixer.music.play(loops = 0, start = 0.0)
其中 loops 表示循环次数,如果设置为 -1 ,表示不停的循环播放,如果 loops 为 5 ,则播放 5+1=6 次;start 表示从音乐文件的哪一秒开始播放,设置为 0 表示从开始完整播放。
-
pygame.mixer.music.rewind()
功能:重新播放
格式:pygame.mixer.music.rewind()
-
pygame.mixer.music.stop()
功能:停止播放
格式:pygame.mixer.music.stop()
-
pygame.mixer.music.pause()
功能:暂停播放
格式:pygame.mixer.music.pause()
用户可以通过 pygame.mixer.music.unpause() 恢复播放。
-
pygame.mixer.music.set_volume()
功能:设置音量
格式:pygame.mixer.music.set_volume(value)
其中 value 的取值为 0.0 ~ 1.0 。
-
pyagme.mixer.music.get_pos()
功能:获取当前播放了多长时间
格式:pygame.mixer.music.get_pos()
返回值为 time 。