我在kivy中有一个小部件类,我在屏幕上动画。到那时,我想慢慢减少动画持续时间,这样小部件就会移动得更快。我的代码改变了持续时间,但对屏幕没有影响。为什么?
我的widget类:
class Obstacle3(Widget):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.animation = Animation(x =-self.width, duration=2)
Clock.schedule_interval(self.faster, 2)
self.anim = True
self.animation.bind(on_complete=self.vanish)
self.animation.start(self)
def faster(self, *args):
if self.animation._duration <= 0.4:
self.animation._duration = self.animation._duration
else:
self.animation._duration = self.animation._duration - 0.4
动画开始后改变持续时间将没有效果。但是您可以在启动Animation
之前设置transition
属性。要使动画在动画后期更快,请尝试使用in_circ
,in_cubic
,in_quart
,in_quint
或in_expo
。
另一种方法是调用self.animation.stop()
,然后在想要提高动画速度时启动另一个Animation
。