![](/img/trans.png)
[英]Slow down Flare animation in Flutter using time and reset at particular time
[英]Flare/Flutter: How to reset the progress of an animation before starting it?
我有一個 Flare 文件,其中包含 3 個動畫,都在同一個畫板上。 我知道在動畫之間切換時,默認情況下 Flare 會將動畫混合在一起,並且播放一個動畫不會將相關節點值重置回編輯器中第 0 幀的值。 這就是我想要實現的行為:在播放新動畫時,我希望之前的動畫完全停止(根本不要混合它們),並且傳入的動畫從一開始就以其所有默認值開始.
用例是這樣的:
預期結果:新動畫重置形狀的不透明度,然后開始並正常播放
實際結果:由於上一個動畫更改了形狀的不透明度,新動畫將使用形狀的原樣而不是在編輯器中創建的形狀
對於我在 GitHub 上解釋的問題,您可以查看有關此問題的線程的結尾(有 gif): https : //github.com/2d-inc/Flare-Flutter/issues/14
在上面的帖子中,Luigi Rosso 提到了“重新實例化”畫板。 有誰知道他的意思是什么以及如何做到這一點? 我嘗試了幾種方法,例如在FlutterActorArtboard
、 ActorNode
和其他一些類中找到的makeInstance
方法( makeInstance
方法有一些變體,但它們的名稱都相似並返回一個新的畫板。但是,我有到目前為止,在 FlareController 實現中替換我的畫板的當前實例並不走運。
我還嘗試手動循環遍歷畫板的所有ActorNode
並首先保存它們的初始值,然后每次播放新動畫時將保存的值復制到畫板,但這似乎破壞了很多東西(動畫是無法識別的,只是在那之后沒有正確播放,所以我一定是做錯了什么。或者我正在重置錯誤的值)。
任何幫助表示贊賞,謝謝!
要在形狀上播放不同的動畫並重置其不透明度,您可以在運行時訪問節點的不透明度:
ActorNode myNode = _artboard.getNode("nodeString");
myNode.opacity = 0.00;
如手冊中所述。
更簡單地說,在新動畫中,您可以在 Rive/Flare 編輯器中為新動畫開始時的不透明度設置一個關鍵幀,這樣當它從頭開始播放動畫時,其不透明度將重置為 1 .
對於打一個動畫,然后完全重寫它時,一個動畫播放您可以延長FlareController
並創建一個自定義動畫控制器在做這個advance
方法。 這是一個快速而骯臟的示例(不是最佳實踐),可讓您了解使用advance
: https : //gist.github.com/she-who-codes/85d8f0da97abfc3ecc43b1cb470e9c29 https://gist.github.com/she-who -代碼/ce633204cd2d4babfe9a5b54e34ca63d
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.