mirror of
https://github.com/3b1b/manim.git
synced 2025-09-01 00:48:45 +00:00
New Endscreen
This commit is contained in:
parent
2c1bd83ba8
commit
a74743d384
1 changed files with 73 additions and 2 deletions
|
@ -2,12 +2,14 @@
|
|||
from helpers import *
|
||||
|
||||
from scene.scene import Scene
|
||||
from animation import Animation
|
||||
from animation.simple_animations import Write, DrawBorderThenFill, LaggedStart
|
||||
from animation.transform import FadeIn, FadeOut, ApplyMethod
|
||||
from mobject.vectorized_mobject import VGroup
|
||||
from mobject.tex_mobject import TexMobject, TextMobject
|
||||
from topics.characters import Mortimer, Blink
|
||||
from topics.characters import Mortimer, Randolph, Blink
|
||||
from topics.objects import PatreonLogo
|
||||
from topics.geometry import Square, Rectangle, DashedLine
|
||||
|
||||
|
||||
class OpeningQuote(Scene):
|
||||
|
@ -64,7 +66,6 @@ class PatreonThanks(Scene):
|
|||
"specific_patrons" : [],
|
||||
"max_patron_group_size" : 20,
|
||||
"patron_scale_val" : 0.8,
|
||||
|
||||
}
|
||||
def construct(self):
|
||||
morty = Mortimer()
|
||||
|
@ -117,6 +118,76 @@ class PatreonThanks(Scene):
|
|||
self.play(Blink(morty))
|
||||
last_group = group
|
||||
|
||||
class PatreonEndScreen(PatreonThanks):
|
||||
CONFIG = {
|
||||
"n_patron_columns" : 3,
|
||||
"max_patron_width" : 3,
|
||||
"run_time" : 20,
|
||||
}
|
||||
def construct(self):
|
||||
self.add_title()
|
||||
self.scroll_through_patrons()
|
||||
|
||||
def add_title(self):
|
||||
title = TextMobject("Clicky Stuffs")
|
||||
title.scale(1.5)
|
||||
title.to_edge(UP, buff = MED_SMALL_BUFF)
|
||||
|
||||
randy, morty = Randolph(), Mortimer()
|
||||
for pi, vect in (randy, LEFT), (morty, RIGHT):
|
||||
pi.scale_to_fit_height(title.get_height())
|
||||
pi.change_mode("thinking")
|
||||
pi.look(DOWN)
|
||||
pi.next_to(title, vect, buff = MED_LARGE_BUFF)
|
||||
self.add_foreground_mobjects(title, randy, morty)
|
||||
|
||||
|
||||
def scroll_through_patrons(self):
|
||||
logo_box = Square(side_length = 2.5)
|
||||
logo_box.to_corner(DOWN+LEFT, buff = MED_LARGE_BUFF)
|
||||
total_width = SPACE_WIDTH - logo_box.get_right()[0]
|
||||
|
||||
black_rect = Rectangle(
|
||||
fill_color = BLACK,
|
||||
fill_opacity = 1,
|
||||
stroke_width = 0,
|
||||
width = 2*SPACE_WIDTH,
|
||||
height = 1.1*SPACE_HEIGHT
|
||||
)
|
||||
black_rect.to_edge(UP, buff = 0)
|
||||
line = DashedLine(SPACE_WIDTH*LEFT, SPACE_WIDTH*RIGHT)
|
||||
line.move_to(black_rect, DOWN)
|
||||
line.shift(SMALL_BUFF*SMALL_BUFF*DOWN)
|
||||
self.add(line)
|
||||
|
||||
patrons = VGroup(*map(TextMobject, self.specific_patrons))
|
||||
patrons.scale(self.patron_scale_val)
|
||||
for patron in patrons:
|
||||
if patron.get_width() > self.max_patron_width:
|
||||
patron.scale_to_fit_width(self.max_patron_width)
|
||||
columns = VGroup(*[
|
||||
VGroup(
|
||||
*patrons[i::self.n_patron_columns]
|
||||
).arrange_submobjects(DOWN, buff = MED_SMALL_BUFF)
|
||||
for i in range(self.n_patron_columns)
|
||||
])
|
||||
columns.arrange_submobjects(
|
||||
RIGHT, buff = LARGE_BUFF,
|
||||
aligned_edge = UP,
|
||||
)
|
||||
columns.scale_to_fit_width(total_width - 1)
|
||||
columns.next_to(black_rect, DOWN, LARGE_BUFF)
|
||||
columns.to_edge(RIGHT)
|
||||
|
||||
self.play(
|
||||
columns.next_to, SPACE_HEIGHT*DOWN, UP, LARGE_BUFF,
|
||||
columns.to_edge, RIGHT,
|
||||
Animation(black_rect),
|
||||
rate_func = None,
|
||||
run_time = self.run_time,
|
||||
)
|
||||
|
||||
|
||||
class ExternallyAnimatedScene(Scene):
|
||||
def construct(self):
|
||||
raise Exception("Don't actually run this class.")
|
||||
|
|
Loading…
Add table
Reference in a new issue