manim-arrange_submobjects的應用及LaggedStart的應用

這是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()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章