updater¶
- class janim.anims.updater.UpdaterParams(updater: DataUpdater | GroupUpdater | ItemUpdater | StepUpdater, global_t: float, alpha: float, range: TimeRange, extra_data: tuple | None)¶
基类:
objectUpdater调用时会传递的参数,用于标注时间信息以及动画进度- updater: DataUpdater | GroupUpdater | ItemUpdater | StepUpdater¶
- global_t: float¶
- alpha: float¶
- extra_data: tuple | None¶
- class janim.anims.updater.StepUpdaterParams(updater: StepUpdater, global_t: float, range: TimeRange, n: int)¶
基类:
objectStepUpdater调用时会传递的参数,用于标注时间信息以及动画进度- updater: StepUpdater¶
- global_t: float¶
- 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- extra_data: Any | None¶
- alpha_on: float | None = None¶
- add_post_updater(updater: DataUpdaterFn[T]) Self¶
- call(data: T, p: UpdaterParams) 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=False和show_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¶