updater

class janim.anims.updater.UpdaterParams(global_t: float, alpha: float, range: TimeRange, extra_data: Any | None, _updater: _DataUpdater | GroupUpdater | None)

基类:object

Updater 调用时会传递的参数,用于标注时间信息以及动画进度

global_t: float
alpha: float
range: TimeRange
extra_data: Any | None
property elapsed: float
class janim.anims.updater.StepUpdaterParams(global_t: float, range: TimeRange, n: int, _updater: StepUpdater)

基类:object

StepUpdater 调用时会传递的参数,用于标注时间信息以及动画进度

global_t: float
range: TimeRange
n: int
class janim.anims.updater.DataUpdater(item: T, func: DataUpdaterFn[T], *, extra: Callable[[Item], Any | None] = <function DataUpdater.<lambda>>, lag_ratio: float = 0, show_at_begin: bool = True, hide_at_end: bool = False, become_at_end: bool = True, skip_null_items: bool = True, root_only: bool = True, **kwargs)

基类:Animation, Generic

以时间为参数对物件的数据进行修改

例如:

class Example(Timeline):
    def construct(self) -> None:
        rect = Rect()
        rect.points.to_border(LEFT)

        self.play(
            DataUpdater(
                rect,
                lambda data, p: data.points.rotate(p.alpha * 180 * DEGREES).shift(p.alpha * 6 * RIGHT)
            )
        )

会产生一个“矩形从左侧旋转着移动到右侧”的动画

并且,可以对同一个物件作用多个 updater,各个 updater 会依次调用

注意:默认 root_only=True 即只对根物件应用该 updater;需要设置 root_only=False 才会对所有后代物件也应用该 updater

另见:UpdaterExample

label_color: tuple[float, float, float] = (242, 218, 255)
add_post_updater(func: DataUpdaterFn[T]) Self
class janim.anims.updater.GroupUpdater(item: T, func: GroupUpdaterFn[T], *, show_at_begin: bool = True, hide_at_end: bool = False, become_at_end: bool = True, **kwargs)

基类:Animation, Generic

以时间为参数对一组物件的数据进行修改

注意:该 Updater 假设 func 不会改变 item 后代物件结构,如果改变结构(例如增删子物件、become() 结构不一致等情况),则可能导致意外行为

label_color: tuple[float, float, float] = (242, 218, 255)
add_post_updater(func: GroupUpdaterFn[T]) Self
class DataGroup(data: 'Item', stack: 'AnimStack', updater: '_GroupUpdater')

基类:object

data: Item
stack: AnimStack
updater: _GroupUpdater
apply_for_group(global_t: float) None
class janim.anims.updater.MethodUpdater(item: Item, show_at_begin: bool = True, hide_at_end: bool = False, become_at_end: bool = True, **kwargs)

基类:Animation

依据物件的变换而创建的 updater

具体参考 update()

label_color: tuple[float, float, float] = (214, 185, 253)
class ActionType(*values)

基类:Enum

GetAttr = 0
Call = 1
updater(data: Item, p: UpdaterParams) None
class janim.anims.updater.MethodUpdaterArgsBuilder(item: Item)

基类:object

使得 .anim.anim(...) 后可以进行同样的操作

class janim.anims.updater.ItemUpdater(item: Item | None, func: ItemUpdaterFn, *, hide_at_begin: bool = True, show_at_end: bool = True, become_at_end: bool = True, **kwargs)

基类:Animation

以时间为参数显示物件

也就是说,在 ItemUpdater 执行时,对于每帧,都会执行 func,并显示 func 返回的物件

在默认情况下:

  • 传入的 item 会在动画的末尾被替换为动画最后一帧 func 所返回的物件,传入 become_at_end=False 以禁用

  • 传入的 item 会在动画开始时隐藏,在动画结束后显示,传入 hide_at_begin=Falseshow_at_end=False 以禁用

  • 若传入 item=None,则以上两点都无效

另见:UpdaterExample

label_color: tuple[float, float, float] = (242, 218, 255)
call(p: UpdaterParams) Item
get_renderer(item: Item) Renderer
render_calls_callback()
class janim.anims.updater.StepUpdater(item: T, func: StepUpdaterFn[T], step: float = 0.02, *, persistent_cache_step: float = 1, show_at_begin: bool = True, hide_at_end: bool = False, become_at_end: bool = True, rate_func: RateFunc = <function linear>, skip_null_items: bool = True, root_only: bool = True, progress_bar: bool = True, **kwargs)

基类:Animation, Generic

按步更新物件,每次间隔 step 秒调用 func 进行下一步更新

label_color: tuple[float, float, float] = (242, 218, 255)
add_post_updater(updater: StepUpdaterFn[T]) Self