改变速度¶
限定名称: manim.animation.speedmodifier.ChangeSpeed
- class ChangeSpeed(mobject=None, *args, use_override=True, **kwargs)[来源]¶
基础类:
Animation修改传递动画的速度。
AnimationGroup使用不同的lag_ratio也可以将多个动画组合成一个。 传递动画的run_time被改变以修改速度。- Parameters:
anim (动画 | _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, ) )方法
此静态方法可用于对更新器应用速度变化。
开始动画。
在完成动画后清理
场景。完成动画。
假设
run_time为1时动画所花费的时间。设置动画进度。
setup更新诸如starting_mobject之类的内容,以及(对于Transforms)target_mobject。
属性
dtis_changing_dt- classmethod add_updater(mobject, update_function, index=None, call_updater=False)[source]¶
此静态方法可用于对更新器应用速度变化。
此更新器将遵循任何正在播放的
ChangeSpeed动画的速度和速率函数,前提是affects_speed_updaters=True。默认情况下,通过常规的Mobject.add_updater()方法添加的更新器函数不会响应动画速度的变化。
- clean_up_from_scene(scene)[source]¶
在完成动画后清理
场景。这包括如果动画是移除器,则移除动画的
Mobject。- Parameters:
场景 (场景) – 动画应该从中清理的场景。
- Return type:
无