XDでLottieを使って効率的にすべてのページに遷移アニメーションを入れる実験
Lottieをサポートしたことで、すべてのページ遷移で発火する暗転などの表現が可能になったかもしれません。
今まで再現しなかった理由
最初に書いておくと、決してできなかったわけではないです。
できたのですが、物凄い手間のかかる作業でした。
例えば、今回のようにすべてのページ遷移のときに暗転するアニメーションを作るとします。
そのとき、自動アニメーションで作成するには「現在地」「暗転」「遷移先」の3枚のアートボードが必要になります。
ここまでであればまったく問題ないのですが、現在のXDの仕様では下記フローのような「自動アニメーション中に条件によって遷移先を変更するリンク」はできません。
そこで、同じアニメーションであっても、遷移先の数だけ暗転用アートボードが必要になります。
これでは複数ページを制作するには向きません。
対応策
ここまでの内容から最適な方法は「アニメーションのトリガーは各ページに訪れた直後」かつ「自動的に発火しなければいけない」とわかります。
つまり、遷移アニメーションを持ったページが必要です。
まっさきに思いついた対応策は「ステート」でしたが、ステートには時間トリガーがありませんでした。
そこでLottieを使用しました。
動画でも可能だと思いますが、実装の際はCSSなどを利用すると思いますので「少しでも近い方を……。」という判断です。
Lottieであればページ遷移後に自動でアニメーションが始まりますし「再生終了トリガー」を使ってアクションの追加もできます。
XDでの作り方
まずは暗転用のLottieを作ります。
真っ黒なオブジェクトが移動するだけのものです。
(詳細はDLデータを参照ください)
こちらをコンポーネント化して、新規ステートを追加します。
そして、追加したステートではLottieを非表示にします。
プロトタイプの設定は「Lottieの自動再生」と「再生終了トリガーを使った非表示用ステートへの変化」を設定します。
これで、ページ遷移後すぐにアニメーションが始まり、再生終了後は非表示になります。
このコンポーネントをすべてのアートボードに配置すれば完成です。
コンポーネントなので管理も簡単です。
デザイン作成時は、レイヤーを非表示にしておけば邪魔になりません。
最後に
クリックしたときに、現在地でもアニメーションが発火できれば、より表現の幅が広がるのですが、それは今後のアップデートに期待します。
サンプル配布
このサンプルのフォントにはBarlowを使用しています。
https://fonts.google.com/specimen/Barlow
この記事が気に入ったらサポートをしてみませんか?