我正在使用pygame + Twisted。我创建了一个Sound
包装类,以下是相关部分:
class Sound(object):
def __init__(self, sound):
self.sound = sound
self._status_task = task.LoopingCall(self._check_status)
self._status_task.start(0.05)
def _check_status(self):
chans = self.sound.get_num_channels()
if chans > 0:
logger.debug("'%s' playing on %d channels",
self.filename, chans)
def play(self):
self.sound.play()
然而,经常发生的情况是,即使声音播放完毕,.get_num_channels()
仍会返回一个正数,例如:
2013-07-08 15:13:30,502-DEBUG-engine.sound - 'sounds/foo.wav' playing on 2 channels
2013-07-08 15:13:30,503-DEBUG-engine.sound - 'sounds/bar.wav' playing on 1 channels
2013-07-08 15:13:30,546-DEBUG-engine.sound - 'sounds/foo.wav' playing on 2 channels
2013-07-08 15:13:30,558-DEBUG-engine.sound - 'sounds/bar.wav' playing on 1 channels
2013-07-08 15:13:30,602-DEBUG-engine.sound - 'sounds/foo.wav' playing on 2 channels
为什么会这样呢?我问这个问题是因为有时候当我告诉它播放声音时,它根本就不播放,我正在努力找出原因。我想了解这个问题可能有助于解决该错误。
foo.wav
总是在两个通道上。也许foo.wav
比循环间隔略长,但bar.wav
足够短? - Jean-Paul Calderone