2019
07/01

【anime.js】ループするタイムライン内でcompleteを実行する

ループするタイムラインの中ではcompleteで呼んでいる関数が初回しか実行されない、という事態に見舞われました。

たとえば、緑の矩形が開いたり閉じたりしている裏で画像が切り替わる、という処理を考えてみます。

ADs

うまくいきそうだけどうまくいかない例

失敗例

以下のように書けば、

1.div.maskのwidthを0に
1-2.コンソールに「1st end」と表示
2.div.maskのwidthを100%に
2-2.コンソールに「2nd end」と表示
3.div.bgの背景を変更
3-2.コンソールに「3rd end」と表示

1に戻る

となりそうなものですが、各コンソール(つまり各アニメーションのcomplete)は初回しか実行されません。
3の背景変更処理もcompleteで呼んでいるため、2枚目以降の画像が変更されません。

個人的にはループ内部といえども毎回completeを呼んでくれるほうが都合がいいと思うのですが、どうもそうなっていないようです。

しょうがないので以下のような対策を考えました。

うまくいく例

成功例

loopオプションでループさせるのではなく、最後のアニメーション完了後に再帰で呼び出すという方法です。

ADs

Post Comments

メールアドレスが公開されることはありません。

Comments

コメントはまだありません。