pygame.mixer.Channel--音频通道
import pygame import time pygame.init() screen = pygame.display.set_mode((200, 100)) bb=pygame.mixer.Sound('酒醉的蝴蝶.ogg') a=pygame.mixer.get_num_channels() #获取本机的音频通道数 ch=pygame.mixer.Channel(0) #创建一个Channel对象 #参数:从0到pygame.mixer.get_num_channels() 的值 #Channel对象可用于精确控制Sounds的播放。一个频道只能播放一个声音 ch.play(bb,loops=0) #在特定频道上播放Sound声音 #如果频道正在播放任何其他声音,它将被停止 #参数1:Sound对象 #loops:控制音乐播放的次数。播放(5)将使音乐播放一次,然后重复5次,总共是6次。如果循环是-1,那么音乐就会无限重复 #maxtime:在给定的毫秒数后停止播放. 默认0--表示全部播放 #fade_ms=0:将使声音以0音量开始播放,并在给定时间内逐渐升至全音量 time.sleep(30) ch.stop() #停止在频道上播放声音 #播放停止后,频道可用于播放新的声音 print() clock = pygame.time.Clock() while True: t = clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: exit() pygame.display.update()
ch.pause() #暂时停止播放频道 #暂时停止在频道上播放声音。它可以在之后调用 Channel.unpause() 恢复 ch.unpause() #恢复暂停播放频道
ch.fadeout(30) #再播放指定时间后就淡出并停止播放音乐 #参数:单位毫秒
ch.set_volume(0.3) ##设置此声音的播放音量 #参数是从0.0到1.0的值 #set_volume(left, right) #如果传递一个参数,则它将同时设置左右声道的音量。如果传递两个参数并且混音器处于立体声模式,则第一个参数将是左扬声器的音量,第二个参数将是右扬声器的音量。(如果第二个参数为None,则第一个参数将是两个扬声器的音量。) a=ch.get_volume() #获得播放频道的音量
a=ch.get_busy() #检查通道是否处于活动状态 #如果通道正在主动混合声音,则返回true。如果通道空闲,则返回False
a=ch.get_sound() #返回当前在此频道上播放的实际Sound对象。如果通道空闲,则返回None
ch.queue(cc) #排队Sound对象 #声音在频道上排队时,它将在当前声音结束后立即开始播放。每个通道一次只能排队一个声音。排队的声音仅在当前播放自动结束时播放。在对Channel.stop()或的任何其他呼叫中清除它 Channel.play() #如果在频道上没有主动播放声音,则声音将立即开始播放 a=ch.get_queue() #返回排队的Sound对象 #如果声音已在此频道上排队,则会返回该声音。一旦排队的声音开始播放,它将不再在队列中
set_endevent(type) -> None
播放停止时让频道发送事件
如果您调用Sound.play(n)或Channel.play(sound,n),结束事件仅发送一次:声音播放“n + 1”次后
如果在声音仍然播放时调用Channel.stop()或Channel.play()调用,则会立即发布事件
type参数将是发送到队列的事件id。这可以是任何有效的事件类型,但一个好的选择是pygame.locals.USEREVENT和之间的值 pygame.locals.NUMEVENTS。如果没有给出类型参数,那么Channel将停止发送事件
get_endevent()
获取播放停止时频道发送的事件
返回每次Channel完成声音播放时要发送的事件类型。如果没有功能返回该功能 pygame.NOEVENT