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