我有一个Flare文件,其中包含3个动画,所有动画都在同一画板上。我知道在动画之间切换时,Flare会默认将动画混合在一起,并且播放一个动画不会将相关节点的值重置为编辑器中第0帧的值。这是我想要实现的行为:播放新动画时,我希望以前的动画完全停止(根本不混合它们),并且让传入的动画从头开始就全部播放默认值。
用例是这样:
所需结果:新动画将重置形状的不透明度,然后像正常一样开始播放并播放
实际结果:由于上一个动画更改了形状的不透明度,因此新动画将使用其原样的形状,而不是在编辑器中创建的形状
对于我在GitHub上解释的问题,您可以查看此问题的线程结尾(有gif图像:https://github.com/2d-inc/Flare-Flutter/issues/14
)在以上主题中,Luigi Rosso提到“重新实例化”画板。有谁知道他的意思是什么以及怎么做?我尝试了几种方法来执行此操作,例如在类make-instance
,FlutterActorArtboard
和其他一些类上找到的ActorNode
方法(make-instance
方法有一些变体,但它们的名称都相似,并返回一个新的画板。但是,到目前为止,我并没有在FlareController实现中替换我的画板的当前实例。
我还尝试过手动遍历画板的所有ActorNode
,首先保存它们的初始值,然后每次播放新动画时将保存的值复制到画板上,但这似乎使事情变得很糟非常差(动画无法识别,并且此后无法正确播放,因此我必须做错了什么。或者我正在重置错误的值)。
感谢您的任何帮助,谢谢!
我有一个Flare文件,其中包含3个动画,所有动画都在同一画板上。我了解到,在动画之间切换时,默认情况下Flare会将动画混合在一起,并且...
为了在形状上播放不同的动画并重置其不透明度,您可以在运行时使用以下命令访问节点的不透明度: