Kivy:声音开始播放,但在Android上'unstoppable',但在Windows上它可以工作



我在kivy中得到了一系列ToggleButton,每个按钮都加载了不同的声音文件。当我在Windows中尝试我的代码时,一切都如预期的那样工作,但在Android上通过Kivy Launcher,声音不会停止。

class AudioButton(ToggleButton):
    sound = ObjectProperty(None)
    def killsound(self, state, dt):
        self.sound.stop()
        if 'Click to stop' in self.text:
            self.text = self.text.strip('nClick to stop')
            self.height = 60
        else:
            pass
    def on_press(self):
        self.bind(state=self.killsound)
        if self.state == 'normal':
            self.sound.stop()
        else:
            self.sound.play()
            self.text = self.text+'nClick to stop'
            self.height=240
        

以下是它应该做的事情:

  • 使用以前指定的声音文件(也指定了:size_hintfont_sizegroup(用作单选按钮)创建一个AudioButton实例
  • 按钮状态发生变化时,on_press触发回调killsound
  • 当按钮为state=='down'时,会播放声音,并且按钮的文本会附加一个标题
  • 如果按钮为state=='normal',则停止当前播放的声音,如果按下相关按钮,如果按下另一个按钮,则出现回调:

回调(killsound):

  • 状态改变时直接停止声音
  • 删除以前添加的标题并调整按钮大小

在Windows上,使用此代码一切正常。然而,在Android上,当调用killsound时,它会删除标题并调整按钮的大小,但不会停止声音——旧的声音(应该停止)仍在播放,新的声音开始了,所以我同时播放了两个声音,两个以上的声音都是一样的。

感谢您的帮助。

Kivy 1.4.1中已修复此问题。您应该通过邮件列表与我们联系,或者报告github问题,而不是在这里发布:)

相关内容

最新更新