Python 如何在Kivy中一次启动多个动画? 目标: 一次启动多个动画 预期结果: 同时定义和启动的所有动画必须并行运行
Python 如何在Kivy中一次启动多个动画? 目标: 一次启动多个动画 预期结果: 同时定义和启动的所有动画必须并行运行,python,kivy,Python,Kivy,实际结果: 第一次启动的唯一动画显示,下面的动画甚至没有启动 参考代码: 谢谢。我相信你在kivy动画中遇到了一个bug。如果您只是在使用一个简单的动画,那么在多个小部件上启动动画应该可以正常工作。当您使用序列(动画与“+”连接)时,会发生此错误序列通过运行第一个动画并在序列中启动下一个动画的完成方法上绑定内部。当您调用start时,该on_complete方法被绑定。但是一旦序列中第一个小部件上的第一个动画完成,第二个动画就会启动,并且on_complete方法就会解除绑定。现在,当第
实际结果:
- 第一次启动的唯一动画显示,下面的动画甚至没有启动
参考代码:
谢谢。我相信你在kivy
动画中遇到了一个bug。如果您只是在使用一个简单的动画
,那么在多个小部件上启动动画
应该可以正常工作。当您使用序列
(动画
与“+”连接)时,会发生此错误<代码>序列
通过运行第一个动画
并在序列
中启动下一个动画
的完成
方法上绑定内部。当您调用start
时,该on_complete
方法被绑定。但是一旦序列中第一个小部件上的第一个动画
完成,第二个动画
就会启动,并且on_complete
方法就会解除绑定。现在,当第二个小部件上的第一个动画
完成时,不会调用on_complete
(在第一个小部件
完成后解除绑定),第二个动画
也不会启动
以下是序列中的代码
:
def on_anim1_complete(self, instance, widget):
self.anim1.unbind(on_complete=self.on_anim1_complete)
self.anim2.start(widget)
在您的例子中,动画
似乎不是在第二个小部件
上启动的,但是因为第一个动画
实际上没有任何动画,所以您看不到它
不幸的是,没有太多的替代方案来避免这个问题
- 您可以第二次创建整个
动画的副本(copy()
或deepcopy()
将不起作用),只需使用两个不同的动画(每个小部件一个)
- 您只需使用简单的
动画
即可完成自己的排序,并在完成时使用自己的启动下一个动画
。方便的是,on_complete
参数中包含了下一次start()
调用所需的动画小部件
- 在某些情况下,可以为单个容器设置动画(如
布局
)。由于这只是为单个小部件设置动画,因此排序应该正确
def on_anim1_complete(self, instance, widget):
self.anim1.unbind(on_complete=self.on_anim1_complete)
self.anim2.start(widget)