如何同时对一个几何图形应用多个动画

时间:2019-08-04 13:38:37

标签: manim

在ORIGIN中有一个正方形位置,我想将其移至UP * 3并缩放至0.5,并与以下代码段相同:

sq = Square()
self.add(sq)
self.play(ApplyMethod(sq.scale, 0.5), ApplyMethod(sq.move_to, UP*3), run_time=5)

但是,第一个被跳过,只有最后一个有效。

我知道创建另一个小正方形并使用transform可以做到,但这将带来更多代码,对此是否有简单的解决方案?谢谢!

1 个答案:

答案 0 :(得分:1)

有3种方法:

class MultipleMethods1(Scene):
    def construct(self):
        sq = Square()
        self.add(sq)
        self.play(
            sq.scale, 0.5,
            sq.move_to, UP*3,
            run_time=5
        )
        self.wait()

class MultipleMethods2(Scene):
    def construct(self):
        sq = Square()
        cr = Circle()
        VGroup(sq,cr).arrange(RIGHT)
        self.add(sq)
        def apply_function(mob):
            mob.scale(0.5)
            mob.shift(UP*3)
            return mob

        self.play(
            ApplyFunction(apply_function,sq),
            ApplyFunction(apply_function,cr),
            run_time=5
        )
        self.wait()

class MultipleMethods3(Scene):
    def construct(self):
        sq = Square()
        self.add(sq)
        sq.generate_target()
        sq.target.scale(0.5)
        sq.target.move_to(UP*3)

        self.play(
            MoveToTarget(sq),
            run_time=5
        )
        self.wait()