這是example_scenes.py中的代碼
class example(Scene):
def construct(self):
title = TextMobject("This is some \\LaTeX")
basel = TexMobject(
"\\sum_{n=1}^\\infty "
"\\frac{1}{n^2} = \\frac{\\pi^2}{6}"
)
VGroup(title, basel).arrange_submobjects(DOWN)
self.play(
Write(title),
FadeInFrom(basel, UP),
)
self.wait()
self.play(
FadeOutAndShift(title,UP),
LaggedStart(FadeOutAndShiftDown, basel),
)
self.wait()
重點關注VGroup的arrange_submobjects的應用:
VGroup(title, basel).arrange_submobjects(DOWN)
以及LaggedStart的應用:
LaggedStart(FadeOutAndShiftDown, basel),
讓我困惑的是,LaggedStart只能對FadeOutAndShiftDown起作用:
self.play(LaggedStart(FadeOutAndShift(title,UP))
對於FadeOutAndShift()會報錯。
因此爲了將LaggedStart()應用於FadeOutAndShift(title,UP),我們可以仿造FadeOutAndShiftDown(),建立FadeOutAndShiftUp()。
打開manimlib\animation\creation.py
class FadeOutAndShift(FadeOut):
CONFIG = {
"direction": DOWN,
}
def __init__(self, mobject, direction=None, **kwargs):
FadeOut.__init__(self, mobject, **kwargs)
if direction is None:
direction = self.direction
self.target_mobject.shift(direction)
class FadeOutAndShiftDown(FadeOutAndShift):
CONFIG = {
"direction": DOWN,
}
class FadeOutAndShiftUp(FadeOutAndShift):
CONFIG = {
"direction": UP,
}
class FadeOutAndShiftLeft(FadeOutAndShift):
CONFIG = {
"direction": LEFT,
}
class FadeOutAndShiftRight(FadeOutAndShift):
CONFIG = {
"direction": RIGHT,
}
然後利用它們:
class example(Scene):
def construct(self):
title = TextMobject("This is some \\LaTeX")
basel = TexMobject(
"\\sum_{n=1}^\\infty "
"\\frac{1}{n^2} = \\frac{\\pi^2}{6}"
)
VGroup(title, basel).arrange_submobjects(DOWN)
self.play(
Write(title),
FadeInFrom(basel, UP),
)
self.wait()
self.play(
LaggedStart(FadeOutAndShiftUp,title),
LaggedStart(FadeOutAndShiftDown, basel),
)
self.wait()