【问题标题】:How to animate a kivy layout subclass?如何为 kivy 布局子类设置动画?
【发布时间】:2018-10-01 02:33:33
【问题描述】:

我正在继承kivy.uix.layout。目标是通过重新计算它们在每一帧上的位置来为子部件设置动画。

这样做的正确方法是什么?

我可以通过这样做来安排重新布局:

self.layout_clock = Clock.schedule_interval(self._trigger_layout, -1)

但是我得到了很多错误:

[CRITICAL] [Clock       ] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute

我猜想通过改变do_layout 内部的孩子们的位置,我会通过一些事件绑定再次触发do_layout,从而创建一个无限循环,对吧?

那么我该怎么做呢?

【问题讨论】:

  • “动画”是什么意思?你能举个例子你想实现什么?
  • 我想沿路径移动子小部件。所以 Layout 需要随着时间的推移改变子 wigdets 的位置。

标签: python animation layout kivy


【解决方案1】:

我想,我自己找到了解决方案。有点。

参考文档中的Schedule before frame 章节,我认为-1 中的timeout 是我需要的,因为我想首先计算所有位置,然后让应用程序在那里绘制所有小部件。

但是,这会造成上述混乱。 我不太明白为什么这会导致所描述的回调循环。如果有人愿意解释:-)

无论如何,所做的timeout01/60(对于60 帧速率)。

self.layout_clock = Clock.schedule_interval(self._trigger_layout, 0)

现在我所有的小部件都像黄油一样顺畅移动,不再有警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多