У меня есть файл Flare с 3 анимациями, содержащимися в нем, все в одном артборде. Я понимаю, что при переключении между анимациями Flare будет смешивать анимации по умолчанию, и что при воспроизведении одной анимации значения соответствующих узлов не будут возвращены к тому, что было в кадре 0 в редакторе. Это поведение, которого я хотел бы достичь: при воспроизведении новой анимации, я хотел бы, чтобы предыдущая анимация полностью прекратилась (не смешивая их вообще) и чтобы входящая анимация начиналась в самом начале со всемиего значения по умолчанию .
Вариант использования:
- Воспроизвести анимацию, где, скажем, непрозрачность фигуры уменьшается до нуля
- Воспроизвести другую анимацию, использующуюфигура сверху, но в редакторе Flare ее непрозрачность равна 1 в начале анимации
Желаемый результат : новая анимация сбрасывает непрозрачность фигуры, а затем начинается ивоспроизводится как обычно
Фактический результат : поскольку предыдущая анимация изменила непрозрачность фигуры, новая анимация будет использовать фигуру в том виде, в каком она была в редакторе
На мой вопрос, как объяснено на GitHub, вы можете посмотреть в конце цепочки по этому вопросу (имеет gifs): https://github.com/2d-inc/Flare-Flutter/issues/14
В вышеприведенной ветке Луиджи Россо упоминает «повторное создание экземпляра» артборда,Кто-нибудь знает, что он имеет в виду под этим и как это сделать? Я попробовал несколько способов сделать это, например, методы makeInstance
, найденные в таких классах, как FlutterActorArtboard
, ActorNode
и некоторые другие (есть несколько вариантов метода makeInstance
, но все они имеют одинаковые имена и возвращаютновый артборд. Однако мне пока не повезло с заменой текущего экземпляра артборда в реализации FlareController.
Я также попытался вручную перебрать все ActorNode
артборда исначала сохраняя их начальные значения, а затем копируя сохраненные значения в монтажную область каждый раз, когда воспроизводится новая анимация, но это, казалось, очень плохо ломалось (анимация была неузнаваема и просто не воспроизводилась после этого, поэтому я должен был это сделатьчто-то не так. Или я сбрасываю неправильные значения).
Любая помощь приветствуется, спасибо!