ChangeSpeed

限定名称: manim.animation.speedmodifier.ChangeSpeed

class ChangeSpeed(mobject=None, *args, use_override=True, **kwargs)[源]

基类: Animation

修改传入动画的速度。具有不同 lag_ratioAnimationGroup 也可以使用,它将多个动画组合成一个。通过修改传入动画的 run_time 来调整速度。

参数:
  • anim (Animation | _AnimationBuilder) – 要修改速度的动画。

  • speedinfo (dict[float, float]) – 包含节点(run_time 的百分比)及其对应的速度因子。

  • rate_func (Callable[[float], float] | None) – 覆盖传入动画的 rate_func,在改变速度前应用。

  • affects_speed_updaters (bool)

示例

示例: SpeedModifierExample

from manim import *

class SpeedModifierExample(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        b = Dot().shift(RIGHT * 4)
        self.add(a, b)
        self.play(
            ChangeSpeed(
                AnimationGroup(
                    a.animate(run_time=1).shift(RIGHT * 8),
                    b.animate(run_time=1).shift(LEFT * 8),
                ),
                speedinfo={0.3: 1, 0.4: 0.1, 0.6: 0.1, 1: 1},
                rate_func=linear,
            )
        )
class SpeedModifierExample(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        b = Dot().shift(RIGHT * 4)
        self.add(a, b)
        self.play(
            ChangeSpeed(
                AnimationGroup(
                    a.animate(run_time=1).shift(RIGHT * 8),
                    b.animate(run_time=1).shift(LEFT * 8),
                ),
                speedinfo={0.3: 1, 0.4: 0.1, 0.6: 0.1, 1: 1},
                rate_func=linear,
            )
        )

示例: SpeedModifierUpdaterExample

from manim import *

class SpeedModifierUpdaterExample(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        self.add(a)

        ChangeSpeed.add_updater(a, lambda x, dt: x.shift(RIGHT * 4 * dt))
        self.play(
            ChangeSpeed(
                Wait(2),
                speedinfo={0.4: 1, 0.5: 0.2, 0.8: 0.2, 1: 1},
                affects_speed_updaters=True,
            )
        )
class SpeedModifierUpdaterExample(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        self.add(a)

        ChangeSpeed.add_updater(a, lambda x, dt: x.shift(RIGHT * 4 * dt))
        self.play(
            ChangeSpeed(
                Wait(2),
                speedinfo={0.4: 1, 0.5: 0.2, 0.8: 0.2, 1: 1},
                affects_speed_updaters=True,
            )
        )

示例: SpeedModifierUpdaterExample2

from manim import *

class SpeedModifierUpdaterExample2(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        self.add(a)

        ChangeSpeed.add_updater(a, lambda x, dt: x.shift(RIGHT * 4 * dt))
        self.wait()
        self.play(
            ChangeSpeed(
                Wait(),
                speedinfo={1: 0},
                affects_speed_updaters=True,
            )
        )
class SpeedModifierUpdaterExample2(Scene):
    def construct(self):
        a = Dot().shift(LEFT * 4)
        self.add(a)

        ChangeSpeed.add_updater(a, lambda x, dt: x.shift(RIGHT * 4 * dt))
        self.wait()
        self.play(
            ChangeSpeed(
                Wait(),
                speedinfo={1: 0},
                affects_speed_updaters=True,
            )
        )

方法

add_updater

这个静态方法可以用于对更新器应用速度改变。

开始

开始动画。

从场景中清理

在动画结束后清理 Scene

finish

完成动画。

get_scaled_total_time

假设 run_time 为 1 时动画所花费的时间。

interpolate

设置动画进度。

setup

update_mobjects

更新诸如 starting_mobject 和 (对于 Transforms) target_mobject 等内容。

属性

dt

is_changing_dt

run_time

_original__init__(anim, speedinfo, rate_func=None, affects_speed_updaters=True, **kwargs)

初始化自身。有关准确签名,请参阅 help(type(self))。

参数:
  • anim (Animation | _AnimationBuilder)

  • speedinfo (dict[float, float])

  • rate_func (Callable[[float], float] | None)

  • affects_speed_updaters (bool)

返回类型:

_setup_scene(scene)[源]

在动画开始之前设置 Scene

这包括在动画是介绍器的情况下 add() 动画的 Mobject

参数:

场景 – 应该从中清理动画的场景。

返回类型:

classmethod add_updater(mobject, update_function, index=None, call_updater=False)[源]

这个静态方法可以用于对更新器应用速度改变。

这个更新器将遵循任何以 affects_speed_updaters=True 播放的 ChangeSpeed 动画的速度和速率函数。默认情况下,通过常规的 Mobject.add_updater() 方法添加的更新器函数不遵循动画速度的变化。

参数:
  • mobject (Mobject) – 应该附加更新器的 mobject。

  • update_function (Updater) – 每当渲染新帧时调用的函数。

  • index (int | None) – 函数应该插入的 mobject 更新器列表中的位置。

  • call_updater (bool) – 如果为 True,在将更新函数附加到 mobject 时调用它。

begin()[源]

开始动画。

此方法在动画播放时立即调用。应尽可能多的初始化,特别是任何 mobject 复制,都应在此方法中进行。

返回类型:

clean_up_from_scene(scene)[源]

在动画结束后清理 Scene

这包括在动画是移除器的情况下 remove() 动画的 Mobject

参数:

scene (场景) – 动画应从中清理的场景。

返回类型:

finish()[源]

完成动画。

此方法在动画结束时调用。

返回类型:

get_scaled_total_time()[源]

假设 run_time 为 1 时动画所花费的时间。

返回类型:

浮点数

interpolate(alpha)[源]

设置动画进度。

此方法在动画期间的每一帧都会调用。

参数:

alpha (float) – 设置动画的相对时间,0表示开始,1表示结束。

返回类型:

update_mobjects(dt)[源]

更新诸如 starting_mobject 和 (对于 Transforms) target_mobject 等内容。请注意,由于通常(总是?)在动画期间会暂停 self.mobject 的更新,因此这不会对 self.mobject 产生任何影响。

参数:

dt (float)

返回类型: