easing関数をカスタマイズするには?
easing関数をカスタマイズするには?
Advent Calendar 2012 軽めのjQueryの18日目です。
jQueryには、animate()とそのショートカットである、fadeIn()、fadeOut()、slideUp()、slideDown()などで使うことができるeasing関数があります。
jQueryの標準ではlinearとswingの2種類、jquery.easing.jsのプラグインで拡張すると、easeInQuad、easeOutQuadなどの30種類(jswingを数えると31種類)がよく知られています。
それでは、easing関数をカスタマイズするにはどうすればいいのでしょうか?
例えば、linearをカスタマイズして、イージング処理を2回繰り返すだけのlinear2nd()という関数は以下のようになります。
- $.extend($.easing,{
- linear2nd: function(status,cur_time,firstNum,changeVal,dur_time){
- if(status > 0.5) cur_time-=dur_time/2;
- return firstNum + changeVal * (cur_time/=dur_time) * 2;
- }
- });
easing関数は5つの引数をとることができます。
status | cur_timeをdur_timeで割った、0から1の値がはいります。 |
cur_time | 経過時間(単位ms) |
firstNum | スタート時間、初期では常に0になります。 |
changeVal | 変化量、初期では常に1になります。 |
dur_time | 実行時間(単位ms) |
デモと、ソースはこちらで確認ができます。 ※ Google Chrome / Safari / Firefoxで動作確認
デモページ
GitHub/Isotake/20121218
おわり
Advent Calenderには今回が初参加です。
軽めのjQueryということで思い切って参加してみました。
それでは、19日目にバトンタッチ!
参照サイト
- BlackFlag
jQueryアニメーションにイージング(easing)処理をつけるプラグイン - anything from here
jquery.js のアニメーションコードの解読 ( 10 ) 番外編 easing関数解読
関連記事