updater

class janim.anims.updater.UpdaterParams(updater: DataUpdater | GroupUpdater | ItemUpdater | StepUpdater, global_t: float, alpha: float, range: TimeRange, extra_data: tuple | None)

基类:object

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

updater: DataUpdater | GroupUpdater | ItemUpdater | StepUpdater
global_t: float
alpha: float
range: TimeRange
extra_data: tuple | None
class janim.anims.updater.StepUpdaterParams(updater: StepUpdater, global_t: float, range: TimeRange, n: int)

基类:object

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

updater: StepUpdater
global_t: float
range: TimeRange
n: int
class janim.anims.updater.DataUpdater(item: T, func: DataUpdaterFn[T], *, lag_ratio: float = 0, hide_at_begin: bool = True, show_at_end: bool = True, 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)
            )
        )

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

另见:UpdaterExample

label_color: tuple[float, float, float] = (177, 137, 198)
class DataGroup(orig_data: 'Item', data: 'Item', extra_data: 'Any | None', alpha_on: 'float | None' = None)

基类:object

orig_data: Item
data: Item
extra_data: Any | None
alpha_on: float | None = None
add_post_updater(updater: DataUpdaterFn[T]) Self
call(data: T, p: UpdaterParams) None
create_extra_data(data: Item) Any | None
wrap_dynamic(updater_data: DataGroup) DynamicItem

以供传入 register_dynamic() 使用

anim_init() None

detect_changes_of_all() 执行之后调用的初始化方法

anim_on_alpha(alpha: float) None

动画在 alpha 处的行为

get_sub_alpha(alpha: float, index: int) float

依据 lag_ratio 得到特定子物件的 sub_alpha

class janim.anims.updater.GroupUpdater(item: T, func: GroupUpdaterFn[T], *, hide_at_begin: bool = True, show_at_end: bool = True, become_at_end: bool = True, **kwargs)

基类:Animation, Generic

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

label_color: tuple[float, float, float] = (177, 137, 198)
add_post_updater(updater: GroupUpdaterFn[T]) Self
call(data: T, p: UpdaterParams) None
wrap_dynamic(idx: int) DynamicItem
anim_init() None

detect_changes_of_all() 执行之后调用的初始化方法

anim_on_alpha(alpha: float) None

动画在 alpha 处的行为

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] = (177, 137, 198)
call(p: UpdaterParams) Item
anim_init() None

detect_changes_of_all() 执行之后调用的初始化方法

scheduled_become() None
anim_on_alpha(alpha: float) None

动画在 alpha 处的行为

class janim.anims.updater.StepUpdater(item: T, func: StepUpdaterFn[T], step: float = 0.02, *, persistent_cache_step: float = 1, hide_at_begin: bool = True, show_at_end: bool = True, become_at_end: bool = True, rate_func: RateFunc = <function linear>, progress_bar: bool = True, **kwargs)

基类:Animation, Generic

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

  • 该 Updater 仅对根物件进行操作

label_color: tuple[float, float, float] = (177, 137, 198)
add_post_updater(updater: StepUpdaterFn[T]) Self
call(data: T, p: StepUpdaterParams) None
dynamic_item(global_t: float) T
anim_init() None

detect_changes_of_all() 执行之后调用的初始化方法

anim_on(local_t: float) None

local_t 换算为 alpha 并调用 anim_on_alpha()

global_t_to_n(global_t: float) int
compute(data: T, global_t: float, *, generate_temporary_cache: bool = False) None