2014-04-19 57 views
1
def on_press(self): 
    file_name = self.filename 
    if(self.flag1<3): 
     var="thread1"+str(self.flag1) 
     var=myThread(1,file_name) 
     self.flag1=self.flag1+1 
     print "Thread count is "+str(threading.active_count()) 
        var.start() 

這裏flag1最初設置爲1。每次按下前端的按鈕時都會調用函數on_press()Pygame和線程

myThread類():

class myThread (threading.Thread): 
    def __init__(self,counter,file_name): 
    threading.Thread.__init__(self) 
    self.counter = counter 
    self.file_name=file_name 
    def run(self): 
    print "Starting " 
    channel=pygame.mixer.music.load(self.file_name) 
    channel=pygame.mixer.music.play() 
    print "Exiting " 

現在我的問題是我每次通話時間on_press()功能新線程被創建和它覆蓋的任何音頻文件被打那個。我希望所有線程同時播放音頻文件。新線程不應覆蓋其他已創建線程播放的音樂。我會怎麼做?

+0

我對解決方案並不完全確定,但我確信pygame.mixer運行在它自己完全不同的pygame的其他線程中,所以您實際上每次都訪問同一個線程。我會嘗試使用pygame.mixer.Sound而不是音樂。 – KSab

回答

1

如果要一次播放多個聲音,請使用Sound類。

music module(重點煤礦)的文檔:

音樂播放和普通聲音播放之間的區別是,音樂流媒體,並沒有真正加載的一次。 調音臺系統一次只支持一個音樂流。