Pygame与线程

1 投票
1 回答
675 浏览
提问于 2025-04-18 03:21
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 个回答

1

如果你想同时播放多个声音,可以使用Sound这个类。

根据音乐模块的说明(我强调一下):

音乐播放和普通声音播放的区别在于,音乐是通过流的方式播放的,而不是一次性全部加载。混音系统一次只能支持一个音乐流。

撰写回答