Pygame和线程

时间:2014-04-19 05:16:51

标签: python multithreading pygame

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()

我的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()函数时都会创建新线程,它会覆盖正在播放的任何音频文件。我希望所有线程同时播放音频文件。新线程不应覆盖其他已创建的线程播放的音乐。我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果您想一次播放多个声音,请使用Sound课程。

来自music module(强调我的)的文档:

  

音乐播放和常规声音播放之间的区别在于音乐是流式传输的,并且从未实际加载过所有音乐。 调音台系统一次只支持一个音乐流。