Composition
The defined composition
Animation in composition.py
- composition.AnimationGroup(Animation)
- composition.Succession(AnimationGroup)
- composition.LaggedStart(AnimationGroup)
- composition.LaggedStartMap(LaggedStart)
Class AnimationGroup(Animation)
AnimationGroup is used to group specified
Animations together as one single group with
lag_ratio equals to 0 such that all animations start at the same time.
Class Succession(AnimationGroup)
Succession is used to group specified
Animations together as one single group with
lag_ratio equals to 1 such that each animation starts successively.
Example
Code
# folder/file: tut/manim_animation_animationgroupsuccession_001a.py
from manimlib.scene.scene import Scene
from manimlib.mobject.geometry import Circle, Square
from manimlib.animation.transform import ApplyMethod, ApplyFunction
from manimlib.mobject.svg.tex_mobject import TextMobject
from manimlib.animation.composition import AnimationGroup, Succession
class manim_animation_animationgroupsuccession_001a(Scene):
def construct(self):
a1=TextMobject("Test1 Text").move_to([-5.5,2.5,0])
a2=TextMobject("T2 Text").move_to([-3,2.5,0])
a3=Circle().scale(0.5).move_to([-0.5,2.5,0])
a4=Square().scale(0.5).move_to([2,2.5,0])
b1=TextMobject("Test1 Text").move_to([-5.5,0,0])
b2=TextMobject("T2 Text").move_to([-3,0,0])
b3=Circle().scale(0.5).move_to([-0.5,0,0])
b4=Square().scale(0.5).move_to([2,0,0])
self.add(TextMobject("AnimationGroup").move_to([0,3.5,0]),TextMobject("Succession").move_to([0,1,0]))
self.add(a1,a2,a3,a4,b1,b2,b3,b4)
self.wait(3)
def a2_func(mob):
mob.move_to(a2)
return mob
def b2_func(mob):
mob.move_to(b2)
return mob
self.play(AnimationGroup(ApplyMethod(a1.move_to,a2),ApplyFunction(a2_func,a3)),Succession(ApplyMethod(b1.move_to,b2),ApplyFunction(b2_func,b3)),run_time=5)
self.wait(3)
self.play(AnimationGroup(AnimationGroup(ApplyMethod(a1.move_to,([-5.5,3,0])),ApplyMethod(a2.move_to,([-3,1.5,0]))),Succession(ApplyMethod(b1.move_to,([-5.5,0.5,0])),ApplyMethod( b2.move_to,([-3,-1,0])))))
self.wait(3)
self.play(AnimationGroup(AnimationGroup(ApplyMethod(a1.move_to,a2),ApplyFunction(a2_func,a3)),Succession(ApplyMethod(b1.move_to,b2),ApplyFunction(b2_func,b3)),run_time=5))
self.wait(3)
def b3_func(mob):
mob.scale(1.5)
return mob
def b4_func(mob):
mob.shift([-2,0,0])
return mob
self.play(Succession(AnimationGroup(ApplyMethod(a3.scale,1.5),ApplyMethod(a4.shift,(-2,0,0)),Succession(ApplyFunction(b3_func,b3),ApplyFunction(b4_func,b4)))),run_time=5)
self.wait(3)
Output