2013-01-21 177 views
2

Pygame的混音器模塊有pygame.mixer.get_busy,它返回一個簡單的布爾值。
我的問題是,我經常播放聲音,比如爆炸聲和槍聲,並且需要知道特定聲音何時播放以防止遊戲對話重疊。Python - Pygame - 獲取特定聲音播放

我考慮製作一個當前正在播放的對話列表,創建一個計時器,當每個聲音都被觸發時倒計時,但這需要我在主遊戲循環中添加一個聲音效果(處理聲音的模塊)更新。
這似乎凌亂,並像一個巨大的放緩。

有沒有更乾淨的方法來做到這一點?

回答

5

您可以使用通道對象。

在通道中播放特定類型的音頻並檢查聲音是否正在播放。

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