ChangeSpeed¶
限定名称: manim.animation.speedmodifier.ChangeSpeed
- class ChangeSpeed(mobject=None, *args, use_override=True, **kwargs)[源]¶
基类:
Animation
修改传入动画的速度。具有不同
lag_ratio
的AnimationGroup
也可以使用,它将多个动画组合成一个。通过修改传入动画的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, ) )
方法
这个静态方法可以用于对更新器应用速度改变。
开始动画。
在动画结束后清理
Scene
。完成动画。
假设
run_time
为 1 时动画所花费的时间。设置动画进度。
setup
更新诸如 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 时调用它。