kivy中on_stop事件未被调用
我需要在Kivy中使用on_stop事件,但似乎没有效果。请看下面的代码。
有没有什么建议:我使用的是kivy 1.8。
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.audio import SoundLoader
class MyApp(App):
def build(self):
sound = SoundLoader.load("some_sound.ogg")
sound.on_stop = sound.play
sound.play()
return Widget()
if __name__ in ('__android__', '__main__'):
MyApp().run()
我甚至尝试使用状态来循环播放声音,但很奇怪的是,即使歌曲已经停止,它的状态仍然显示为播放。有人能告诉我这是什么问题吗?
下面的代码:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.audio import SoundLoader
from kivy.clock import Clock
class MyApp(App):
def build(self):
self.sound = SoundLoader.load("playScreen.wav")
self.sound.on_stop = self.update
self.sound.play()
Clock.schedule_interval(self.update, 1.0/1)
return Widget()
def update(self,dt):
print "state is ",self.sound.state
if self.sound.state == 'stop':
self.sound.play()
if __name__ in ('__android__', '__main__'):
MyApp().run()
1 个回答
2
这是在 audio_gstplayer.py
里的一个 bug - 当音频播放结束时,GstPlayer
会停止,但 Sound.state
的状态没有更新,也没有触发 on_stop
事件。
不过,如果你只是想让声音不断循环播放,可以设置 loop
属性。
sound = SoundLoader.load('some_sound.ogg')
sound.loop = True
sound.play()
编辑:提交了一个拉取请求 https://github.com/kivy/kivy/pull/2131