anim_stack

class janim.anims.anim_stack.AnimStack(item: Item, time_aligner: TimeAligner)

基类:object

用于在 Timeline 中记录作用于 Item 上的 Animation

detect_change(item: Item, at: float, *, force: bool = False) None

检查物件相比 self.prev_display 所记录的物件而言是否发生变化

若有变化则记录为 Display 对象

has_detected_change() bool
detect_change_if_not(item: Item) None
append(anim: ItemAnimation) None

AnimStack 添加 Animation 对象

get_at_left(as_time: float) list[ItemAnimation]
get(as_time: float) list[ItemAnimation]
compute(as_time: float, readonly: bool, *, get_at_left: bool = False) Item

得到指定时间 as_time 的物件,考虑了动画的作用

readonly 用来表示调用方是否会对返回值进行修改

  • 如果 readonly=True 则表示不会进行修改,该方法会放心地直接返回缓存 (但是这并没有强制约束性,传入 readonly=True 时请遵循不修改返回值的原则,以免影响缓存数据)

  • 如果 readonly=False 则表示会进行修改,此时会返回缓存的拷贝,避免影响缓存数据

例如:

  • item_current() 中的调用是 readonly=False 的, 因为 item_current() 的返回值最终会被用户使用,我们不能保证用户是否会修改,所以我们干脆假定用户会修改

  • 例如用于绘制时的调用时 readonly=True,因为绘制时不会对物件数据产生影响

compute_anims(as_time: float, anims: list[ItemAnimation]) ComputeAnimsGenerator
clear_cache() None