gpt4 book ai didi

python - Manim,无变换的 ReplacementTransform

转载 作者:行者123 更新时间:2023-12-02 02:26:25 28 4
gpt4 key购买 nike

我是马尼姆新手。

与下面的示例一样,

class scene_example(Scene):
def construct(self):
txt1 = Text("Text1")
txt2 = Text("Change to this text without animation")

self.play(FadeIn(txt1))
self.play(ReplacementTransform(txt1, txt2))

有没有什么方便的功能可以将txt1“替换”为txt2? (即,没有“变形”动画?)

class scene_example(Scene):
def construct(self):
txt1 = Text("Text1")
txt2 = Text("Change to this text without animation")

self.play(FadeIn(txt1))
self.play(FadeOut(txt1), FadeIn(txt2) )

这段代码可以实现我想要的功能,但我觉得可能有像 ReplacemnetTransform 这样的函数来实现简单的“替换”动画。我尝试为 FadeIn 和 FadeOut 创建一个函数,但是这不起作用。

class q(Scene):
def construct(self):
def Replace(self, mObj1, mObj2):
self.play(FadeIn(mObj1),FadeOut(mObj2))

txt1 = "HI"
txt2 = "HI2"

self.play(FadeIn(txt1))
Replace(txt1, txt2)

最佳答案

在您尝试编写的代码中:

class q(Scene):
def construct(self):
def Replace(self, mObj1, mObj2):
self.play(FadeIn(mObj1),FadeOut(mObj2))

txt1 = Text("HI")
txt2 = Text("HI2")

self.play(FadeIn(txt1))
Replace(txt1, txt2)

参数self不会传递到 Replace自动功能。一种解决方案是更换 Replace(txt1, txt2)Replace(self, txt1, txt2) .

另一种选择是不创建 Replace完全采用 self 参数。代码

class q(Scene):
def construct(self):
def Replace(mObj1, mObj2):
self.play(FadeIn(mObj1),FadeOut(mObj2))

txt1 = Text("HI")
txt2 = Text("HI2")

self.play(FadeIn(txt1))
Replace(txt1, txt2)

应该也可以工作。在这种情况下,由于 python 中作用域的工作方式,self里面Replaceself参数传递给construct方法。在前面的示例中,Replace有自己的self参数,self参数屏蔽传递给 construct 的参数,以及self Replace内指Replaceself 。 (默认情况下,除非在调用 Replace 时给出任何值,否则它没有任何值。事实上,当您尝试运行代码时,您可能会遇到以下错误 TypeError: Replace() missing 1 required positional argument: 'mObj2' )

另一种可能性是定义 Replace里面q类,但在 construct 之外方法:

class q(Scene):
def Replace(self, mObj1, mObj2):
self.play(FadeIn(mObj1),FadeOut(mObj2))

def construct(self):
txt1 = Text("HI")
txt2 = Text("HI2")

self.play(FadeIn(txt1))
self.Replace(txt1, txt2)

此外,如果您只想将初始文本替换为一些根本没有动画的新文本(甚至没有淡入和淡出),那么您可以使用

self.remove(txt1)
self.add(txt2)

一个更复杂的选项是创建自定义 Animation使用两个 MObject 实例化的类,并淡出第一个 MObject,同时淡入第二个 MObject。

class FadingReplace(Animation):
def __init__(self, obj1, obj2, ...):
pass
#implementation left as an exercise for the reader

然后你可以使用

self.play(FadingReplace(txt1, txt2))

关于python - Manim,无变换的 ReplacementTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65588050/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com