我在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_hint
、font_size
和group
(用作单选按钮)创建一个AudioButton
实例 - 按钮状态发生变化时,
on_press
触发回调killsound
- 当按钮为
state=='down'
时,会播放声音,并且按钮的文本会附加一个标题 - 如果按钮为
state=='normal'
,则停止当前播放的声音,如果按下相关按钮,如果按下另一个按钮,则出现回调:
回调(killsound):
- 状态改变时直接停止声音
- 删除以前添加的标题并调整按钮大小
在Windows上,使用此代码一切正常。然而,在Android上,当调用killsound
时,它会删除标题并调整按钮的大小,但不会停止声音——旧的声音(应该停止)仍在播放,新的声音开始了,所以我同时播放了两个声音,两个以上的声音都是一样的。
感谢您的帮助。
Kivy 1.4.1中已修复此问题。您应该通过邮件列表与我们联系,或者报告github问题,而不是在这里发布:)