我在 kivy 中获得了一系列 ToggleButtons,每个都加载了不同的声音文件。
当我在 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
这是它的作用/应该做的:
- 使用先前指定的声音文件创建一个
AudioButton
实例(也指定:size_hint
,font_size
和group
(作为单选按钮) on_press
killsound
当 Button 的状态改变时触发回调- 当按钮是
state=='down'
声音播放时,按钮的文本会附加一个标题 - 如果按钮是
state=='normal'
它会停止当前播放的声音,如果相关按钮被按下,如果另一个按钮被按下,则有回调:
回调(killsound):
- 状态改变时直接停止声音
- 删除之前添加的 Caption 并调整 Button 的大小
在 Windows 上,此代码一切正常。然而,在 Android 上,当killsound
get 被调用时,它会删除标题并调整按钮的大小,但不会停止声音 - 旧声音(应该停止)仍在播放,新声音开始,所以我得到了两个声音同时播放,相同的有两个以上的声音。
你能帮助我吗?