簡體   English   中英

Flare/Flutter:如何在開始之前重置動畫的進度?

[英]Flare/Flutter: How to reset the progress of an animation before starting it?

我有一個 Flare 文件,其中包含 3 個動畫,都在同一個畫板上。 我知道在動畫之間切換時,默認情況下 Flare 會將動畫混合在一起,並且播放一個動畫不會將相關節點值重置回編輯器中第 0 幀的值。 這就是我想要實現的行為:在播放新動畫時,我希望之前的動畫完全停止(根本不要混合它們),並且傳入的動畫從一開始就以其所有默認值開始.

用例是這樣的:

  1. 播放動畫,例如,形狀的不透明度降至零
  2. 播放使用上方形狀的不同動畫,但在 Flare 編輯器中,動畫開始時其不透明度為 1

預期結果:新動畫重置形狀的不透明度,然后開始並正常播放

實際結果:由於上一個動畫更改了形狀的不透明度,新動畫將使用形狀的原樣而不是在編輯器中創建的形狀

對於我在 GitHub 上解釋的問題,您可以查看有關此問題的線程的結尾(有 gif): https : //github.com/2d-inc/Flare-Flutter/issues/14

在上面的帖子中,Luigi Rosso 提到了“重新實例化”畫板。 有誰知道他的意思是什么以及如何做到這一點? 我嘗試了幾種方法,例如在FlutterActorArtboardActorNode和其他一些類中找到的makeInstance方法( makeInstance方法有一些變體,但它們的名稱都相似並返回一個新的畫板。但是,我有到目前為止,在 FlareController 實現中替換我的畫板的當前實例並不走運。

我還嘗試手動循環遍歷畫板的所有ActorNode並首先保存它們的初始值,然后每次播放新動畫時將保存的值復制到畫板,但這似乎破壞了很多東西(動畫是無法識別的,只是在那之后沒有正確播放,所以我一定是做錯了什么。或者我正在重置錯誤的值)。

任何幫助表示贊賞,謝謝!

要在形狀上播放不同的動畫並重置其不透明度,您可以在運行時訪問節點的不透明度:

ActorNode myNode = _artboard.getNode("nodeString");
myNode.opacity = 0.00;

手冊中所述。

更簡單地說,在新動畫中,您可以在 Rive/Flare 編輯器中為新動畫開始時的不透明度設置一個關鍵幀,這樣當它從頭開始播放動畫時,其不透明度將重置為 1 .

對於打一個動畫,然后完全重寫它時,一個動畫播放您可以延長FlareController並創建一個自定義動畫控制器在做這個advance方法。 這是一個快速而骯臟的示例(不是最佳實踐),可讓您了解使用advancehttps : //gist.github.com/she-who-codes/85d8f0da97abfc3ecc43b1cb470e9c29 https://gist.github.com/she-who -代碼/ce633204cd2d4babfe9a5b54e34ca63d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM