Python - Pygame - 获取特定声音的播放效果

时间:2013-01-21 05:01:50

标签: python audio pygame

Pygame的混音器模块有pygame.mixer.get_busy,返回一个简单的布尔值 我的问题是我有声音不断播放,如爆炸和枪声,并且需要知道特定声音何时播放以防止游戏对话重叠。

我考虑制作一个当前正在播放的对话列表,创建一个在每个声音被触发时倒计时的计时器,但这需要我在主游戏循环中添加声音效果(处理声音的模块)更新。登记/> 这似乎很混乱,就像一个巨大的减速。

有更简洁的方法吗?

1 个答案:

答案 0 :(得分:6)

您可以使用频道对象。

在频道中播放特定类型的音频,然后检查声音是否正在播放。

import pygame

def main(filepath):
    pygame.mixer.init()

    # If you want more channels, change 8 to a desired number. 8 is the default number of channel

    pygame.mixer.set_num_channels(8)

    # This is the sound channel
    voice = pygame.mixer.Channel(5)

    sound = pygame.mixer.Sound(filepath)

    voice.play(sound)

    if voice.get_busy():
        #Do Something