动力学效果

在 1.7.0 版本加入.

KineticEffect 是用于根据运动计算速度的基类。当运动结束时,该效果会根据速度计算运动的位置,并通过摩擦力减小速度。运动将持续到速度降为 0 为止。

从概念上讲,用法可以是:

>>> effect = KineticEffect()
>>> effect.start(10)
>>> effect.update(15)
>>> effect.update(30)
>>> effect.stop(48)

随着时间的推移,您将开始一个值的运动,更新它,并停止运动。此时,您将把运动值获取到 KineticEffect.value 中。在我手动输入的示例中,计算出的速度将是:

>>> effect.velocity
3.1619100231163046

经过多次时钟交互后,速度将根据 KineticEffect.friction 逐渐减小。计算得到的值将存储在 KineticEffect.value 中。该 value 的输出可能如下:

46.30038145219605
54.58302451968686
61.9229016256196
# ...
class kivy.effects.kinetic.KineticEffect(**kwargs)[源代码]

基类:EventDispatcher

动力学效果类。更多信息请参阅模块文档。

cancel()[源代码]

取消一次移动。当无法调用 stop() 时,可以使用此方法。它会将 is_manual 重置为 False,并在速度大于 0 时计算移动。

friction

应用于速度上的摩擦力。

friction 是一个 NumericProperty,默认值为 0.05。

is_manual

指示移动是否正在进行中(True)或未进行(False)。

is_manual 是一个 BooleanProperty,默认值为 False。

max_history

将最多 max_history 个移动值保存到历史记录中。这用于根据移动正确计算速度。

max_history 是一个 NumericProperty,默认值为 5。

min_distance

移动速度非零所需的最小距离。

在 1.8.0 版本加入.

min_distanceNumericProperty,默认值为 0.1。

min_velocity

低于此数值的速度将被归一化为0。换句话说,任何速度低于此数值的运动都将被停止。

在 1.8.0 版本加入.

min_velocity 是一个 NumericProperty,默认值为 0.5。

start(val, t=None)[源代码]

开始移动。

参数:
val:浮点数或整数

移动的值

t:浮点数,默认为 None

移动发生的时间。如果未设置时间,将使用 time.time()。

std_dt

修正 update_velocity,如果 dt 不是常量。

在 2.0.0 版本加入.

std_dt 是一个 NumericProperty,默认值为 0.017。

stop(val, t=None)[源代码]

停止移动。

参数请参见 start()

update(val, t=None)[源代码]

更新移动。

参数请参见 start()

update_velocity(dt)[源代码]

(内部)根据帧时间和摩擦力更新速度。

value

效果的值(在移动过程中及计算所得)。

value 是一个 NumericProperty,默认值为 0。

velocity

移动的速度。

velocity 是一个 NumericProperty,默认值为 0。