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_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: float | None = None, gain_to_background: 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
中的一部分
- 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_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: ndarray, d_point: ndarray, buttons: int, modifiers: int) None ¶
鼠标拖拽事件
- on_mouse_motion(point: ndarray, d_point: ndarray) None ¶
鼠标移动事件
- on_mouse_press(point: ndarray, button: int, mods: int) None ¶
鼠标按下事件
- on_mouse_release(point: ndarray, button: int, mods: int) None ¶
鼠标弹起事件
- on_mouse_scroll(point: ndarray, offset: 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: 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)¶
等待一段时间