Scene¶
Scene¶
-
class
manimlib.scene.scene.
Scene
(**kwargs)¶ 场景类
window_config
: 窗口参数camera_config
: 相机参数file_writer_config
: 文件写入参数start_at_animation_number
: 在某个动画开始播放end_at_animation_number
: 在某个动画结束播放preview
: 是否为预览
-
add
(*new_mobjects: manimlib.mobject.mobject.Mobject)¶ 将 Mobject 添加到场景中,后添加的会覆盖在上层
-
add_mobjects_among
(values: Iterable)¶ This is meant mostly for quick prototyping, e.g. to add all mobjects defined up to a point, call self.add_mobjects_among(locals().values())
-
add_sound
(sound_file: str, time_offset: float = 0, gain: Optional[float, None] = None, gain_to_background: Optional[float, None] = None)¶ 添加声音
-
anims_from_play_args
(*args, **kwargs) → list[Animation]¶ 每个 arg 可以是一个 动画的实例,也可以是一个 mobject 的方法,后面的 kwargs 即为这个方法所包含的参数,可以以字典的形式给出
这一系列动画会通过参数列表 args 编译
如果是 动画实例,则会直接添加到 动画列表 中
- 如果是一个 mobject 的方法,则会将它包装成
MoveToTarget
实例,其中的参数即为后面的字典或参数 直至读取到下一个动画实例,或是下一个 mobject 的方法之前,都是上面一个
MoveToTarget
的参数
- 如果是一个 mobject 的方法,则会将它包装成
或者采用 ManimCommunity 编写的
Mobject.animate
方法,采用链式操作,将一连串方法编译成一个MoveToTarget
,详见manimlib.mobject.mobject._AnimationBuilder
一般我们采用
Scene.play
方法,而不是这个,因为play
方法包装得更全面,而anims_from_play_args
这个方法只是play
中的一部分
-
bring_to_back
(*mobjects: manimlib.mobject.mobject.Mobject)¶ 移动到下层
-
bring_to_front
(*mobjects: manimlib.mobject.mobject.Mobject)¶ 移动到最上层
-
clear
()¶ 清空场景
-
construct
() → None¶ 在此处写入所有动画,由子类重写
-
embed
(close_scene_on_exit: bool = True) → None¶ 使用 IPython 终端交互
-
get_animation_time_progression
(animations: Iterable[Animation]) → list[float] | np.ndarray | ProgressDisplay¶ 获取动画进度条,在此过程中播放动画
-
get_mobject_copies
() → list¶ 获取场景中物件的拷贝
-
get_mobjects
() → list¶ 获取场景中的物件
-
get_time
() → float¶ 获取当前场景时间
-
get_wait_time_progression
(duration: float, stop_condition: Callable[[], bool] | None = None) → list[float] | np.ndarray | ProgressDisplay¶ 获取等待进度条,在此过程中播放等待动画
-
interact
() → None¶ 交互
-
on_key_press
(symbol: int, modifiers: int) → None¶ 键盘按下事件
-
on_key_release
(symbol: int, modifiers: int) → None¶ 键盘释放事件
-
on_mouse_drag
(point: numpy.ndarray, d_point: numpy.ndarray, buttons: int, modifiers: int) → None¶ 鼠标拖拽事件
-
on_mouse_motion
(point: numpy.ndarray, d_point: numpy.ndarray) → None¶ 鼠标移动事件
-
on_mouse_press
(point: numpy.ndarray, button: int, mods: int) → None¶ 鼠标按下事件
-
on_mouse_release
(point: numpy.ndarray, button: int, mods: int) → None¶ 鼠标弹起事件
-
on_mouse_scroll
(point: numpy.ndarray, offset: numpy.ndarray) → None¶ 鼠标滚轮滚动事件
-
on_resize
(width: int, height: int) → None¶ 窗口缩放事件
-
play
(*args, **kwargs) → None¶ 播放动画
-
point_to_mobject
(point: np.ndarray, search_set: Iterable[Mobject] | None = None, buff: float = 0) → Mobject | None¶ E.g. if clicking on the scene, this returns the top layer mobject under a given point
-
remove
(*mobjects: manimlib.mobject.mobject.Mobject)¶ 从场景中移除所有给定的 mobject ,如果传入的 mobject 在一个 Group 中,那么这个物件会被移除, 同在该 Group 的其他成员会重新被加载到场景中(但不会重新加载到 Group 中)。
例如我们有
Group(m1, m2, m3)
,当场景调用了scene.remove(m1)
,那么得到的结果为 场景中剩余的是未组合的m2
和m3
-
run
() → None¶ 场景运行
-
save_state
() → None¶ 保存场景当前状态
-
setup
() → None¶ 在
construct
被调用前执行,在子类中重写
-
tear_down
() → None¶ 销毁场景
-
wait
(duration: float = 1.0, stop_condition: Callable[], bool] = None, note: str = None, ignore_presenter_mode: bool = False)¶ 等待一段时间