Skip to content

Commit d641b56

Browse files
committed
Add ChangeLog.md.
Optimize easing functions that delete all redundant `else` keywords. Add boundary test in some easing functions.
1 parent 56ee5b7 commit d641b56

3 files changed

Lines changed: 121 additions & 91 deletions

File tree

‎ChangeLog.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## v2.0.1
2+
_`2019.12.18 UTC+8 21:32`_
3+
* Optimize easing functions that delete all redundant `else` keywords.
4+
* Add boundary test in some easing functions.
5+
6+

‎README.md‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
1-
MojoJS v2.0.0
1+
MojoJS v2.0.1
22
=============
33

4-
MojoJS is a JavaScript library that includes [**Animation Engine**](#animation-engine) and [**CSS Selector Engine**](#css-selector-engine). And it's licensed under the [MIT License](https://github.com/scottcgi/MojoJS/blob/master/LICENSE "Mojoc Under MIT License").
4+
MojoJS is a JavaScript library that includes [**Animation Engine**](#animation-engine) and [**CSS Selector Engine**](#css-selector-engine).
5+
6+
* Released version in [releases](https://github.com/scottcgi/MojoJS/releases).
7+
* Release changes in [ChangeLog](https://github.com/scottcgi/MojoJS/blob/master/ChangeLog.md).
8+
9+
10+
### License
11+
12+
MojoJS is licensed under the [MIT License](https://github.com/scottcgi/MojoJS/blob/master/LICENSE "Mojoc Under MIT License").
13+
514

615
### Animation Engine
716

‎animation/MojoJS.animation.js‎

Lines changed: 104 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* Copyright (c) 2012-2019 scott.cgi All Rights Reserved.
33
*
4-
* This source code belongs to project MojocJS, which is an animation Engine hosted on GitHub,
4+
* This source code belongs to project MojoJS, which is an animation Engine hosted on GitHub,
55
* and licensed under the MIT License.
66
*
77
* License: https://github.com/scottcgi/MojoJS/blob/master/LICENSE
@@ -707,17 +707,16 @@
707707

708708
//---------------------------------------------------------------------------------------------------------------------
709709

710-
711710
animator.unitEl.style.cssText = "position:absolute;width:0;display:block;";
712711
animator.unitEl.id = "MojoJS-animation-unitEl";
713712

714713

715714
/**
716-
* The original algorithms of easing functions come from Robert Penner
717-
* http://robertpenner.com/easing/
718-
*
719-
* The licenses are MIT and BSD
720-
* http://robertpenner.com/easing_terms_of_use.html
715+
* The original algorithms of easing functions come from Robert Penner.
716+
* The open source licensed under the MIT License and the BSD License.
717+
*
718+
* Introduce: http://robertpenner.com/easing
719+
* License : http://robertpenner.com/easing_terms_of_use.html
721720
*/
722721
animator.easing = {
723722

@@ -735,9 +734,9 @@
735734
quadraticInOut: function(time) {
736735
if (time < 0.5) {
737736
return time * time * 2.0;
738-
} else {
739-
return (2.0 * time * (2.0 - time) - 1.0);
740-
}
737+
}
738+
739+
return 2.0 * time * (2.0 - time) - 1.0;
741740
},
742741

743742

@@ -746,15 +745,15 @@
746745
},
747746
cubicOut: function(time) {
748747
time -= 1.0;
749-
return (time * time * time + 1.0);
748+
return time * time * time + 1.0;
750749
},
751750
cubicInOut: function(time) {
752751
if (time < 0.5) {
753752
return 4.0 * time * time * time;
754-
} else {
755-
time -= 1.0;
756-
return 4.0 * time * time * time + 1.0;
757-
}
753+
}
754+
755+
time -= 1.0;
756+
return 4.0 * time * time * time + 1.0;
758757
},
759758

760759

@@ -763,15 +762,15 @@
763762
},
764763
quarticOut: function(time) {
765764
time -= 1.0;
766-
return time * time * time * (-time) + 1.0;
765+
return 1.0 - time * time * time * time;
767766
},
768767
quarticInOut: function(time) {
769768
if (time < 0.5) {
770769
return 8.0 * time * time * time * time;
771-
} else {
772-
time -= 1.0;
773-
return (-8.0 * time * time * time * time + 1.0);
774-
}
770+
}
771+
772+
time -= 1.0;
773+
return 1.0 - 8.0 * time * time * time * time;
775774
},
776775

777776

@@ -785,47 +784,47 @@
785784
quinticInOut: function(time) {
786785
if (time < 0.5) {
787786
return 16.0 * time * time * time * time * time;
788-
} else {
789-
time -= 1.0;
790-
return 16.0 * time * time * time * time * time + 1.0;
791-
}
787+
}
788+
789+
time -= 1.0;
790+
return 16.0 * time * time * time * time * time + 1.0;
792791
},
793792

794793

795794
exponentialIn: function(time) {
796-
if (time === 0.0) {
795+
if (time <= 0.0) {
797796
return time;
798-
} else {
799-
return Math.pow(2.0, 10.0 * (time - 1.0));
800-
}
797+
}
798+
799+
return Math.pow(2.0, 10.0 * (time - 1.0));
801800
},
802801
exponentialOut: function(time) {
803-
if (time === 1.0) {
802+
if (time >= 1.0) {
804803
return time;
805-
} else {
806-
return 1.0 - Math.pow(2.0, -10.0 * time);
807804
}
805+
806+
return 1.0 - Math.pow(2.0, -10.0 * time);
808807
},
809808
exponentialInOut: function(time) {
810-
if (time === 0.0 || time === 1.0) {
809+
if (time <= 0.0 || time >= 1.0) {
811810
return time;
812811
}
813812

814813
if (time < 0.5) {
815814
return 0.5 * Math.pow(2.0, 20.0 * time - 10.0);
816-
} else {
817-
return 0.5 * (2.0 - Math.pow(2.0, -20.0 * time + 10.0));
818-
}
815+
}
816+
817+
return 0.5 * (2.0 - Math.pow(2.0, -20.0 * time + 10.0));
819818
},
820819

821820

822821
sineIn: function(time) {
823822
return 1.0 - Math.cos(time * 1.570796326794897);
824823
},
825-
sineOut: function(time, M) {
824+
sineOut: function(time) {
826825
return Math.sin(time * 1.570796326794897);
827826
},
828-
sineInOut: function(time, M) {
827+
sineInOut: function(time) {
829828
return 0.5 * (1.0 - Math.cos(time * 3.141592653589793));
830829
},
831830

@@ -839,39 +838,39 @@
839838
circularInOut: function(time) {
840839
if (time < 0.5) {
841840
return 0.5 * (1.0 - Math.sqrt(1.0 - 4.0 * time * time));
842-
} else {
843-
time = time * 2.0 - 2.0;
844-
return 0.5 * (Math.sqrt(1.0 - time * time) + 1.0);
845841
}
842+
843+
time = time * 2.0 - 2.0;
844+
return 0.5 * (Math.sqrt(1.0 - time * time) + 1.0);
846845
},
847846

848847

849848
elasticIn: function(time) {
850-
if (time === 0.0 || time === 1.0)
849+
if (time <= 0.0 || time >= 1.0)
851850
{
852851
return time;
853852
}
854853

855854
return -Math.pow(2.0, 10.0 * time - 10.0) * Math.sin((3.33 * time - 3.58) * 6.283185307179586);
856855
},
857856
elasticOut: function(time) {
858-
if (time === 0.0 || time === 1.0)
857+
if (time <= 0.0 || time >= 1.0)
859858
{
860859
return time;
861860
}
862861

863862
return Math.pow(2.0, -10.0 * time) * Math.sin((3.33 * time - 0.25) * 6.283185307179586) + 1.0;
864863
},
865864
elasticInOut: function(time) {
866-
if (time === 0.0 || time === 1.0) {
865+
if (time <= 0.0 || time >= 1.0) {
867866
return time;
868867
}
869868

870869
if (time < 0.5) {
871870
return -0.5 * Math.pow(2.0, 20.0 * time - 10.0) * Math.sin((4.45 * time - 2.475) * 6.283185307179586);
872-
} else {
873-
return Math.pow(2.0, -20.0 * time + 10.0) * Math.sin((4.45 * time - 2.475) * 6.283185307179586) * 0.5 + 1.0;
874-
}
871+
}
872+
873+
return Math.pow(2.0, -20.0 * time + 10.0) * Math.sin((4.45 * time - 2.475) * 6.283185307179586) * 0.5 + 1.0;
875874
},
876875

877876

@@ -885,100 +884,116 @@
885884
backInOut: function(time) {
886885
if (time < 0.5) {
887886
return time * time * (14.379636 * time - 5.189818);
888-
} else {
889-
time -= 1.0;
890-
return time * time * (14.379636 * time + 5.189818) + 1.0;
891-
}
887+
}
888+
889+
time -= 1.0;
890+
return time * time * (14.379636 * time + 5.189818) + 1.0;
892891
},
893892
backInExponentialOut: function(time) {
894893
if (time < 0.5) {
895894
return time * time * (14.379636 * time - 5.189818);
896-
} else {
897-
return 0.5 * (2.0 - Math.pow(2.0, -20.0 * time + 10.0));
898-
}
895+
}
896+
897+
return 0.5 * (2.0 - Math.pow(2.0, -20.0 * time + 10.0));
899898
},
900899
backInElasticOut: function(time) {
901900
if (time < 0.5) {
902901
return time * time * (14.379636 * time - 5.189818);
903-
} else {
904-
return Math.pow(2.0, -20.0 * time + 10.0) * Math.sin((4.45 * time - 2.475) * 6.283185307179586) * 0.5 + 1.0;
905-
}
902+
}
903+
904+
return Math.pow(2.0, -20.0 * time + 10.0) * Math.sin((4.45 * time - 2.475) * 6.283185307179586) * 0.5 + 1.0;
906905
},
907906

908907

909908
bounceIn: function(time) {
910909
if (time > 0.636364) {
911910
time = 1.0 - time;
912911
return 1.0 - 7.5625 * time * time;
913-
} else if (time > 0.27273) {
912+
}
913+
914+
if (time > 0.27273) {
914915
time = 0.454546 - time;
915916
return 0.25 - 7.5625 * time * time;
916-
} else if (time > 0.090909) {
917+
}
918+
919+
if (time > 0.090909) {
917920
time = 0.181818 - time;
918921
return 0.0625 - 7.5625 * time * time;
919-
} else {
920-
if (time === 1.0) {
921-
return time;
922-
}
923-
924-
time = 0.045455 - time;
925-
return 0.015625 - 7.5625 * time * time;
922+
}
923+
924+
if (time >= 1.0) {
925+
return time;
926926
}
927+
928+
time = 0.045455 - time;
929+
return 0.015625 - 7.5625 * time * time;
927930
},
928931
bounceOut: function(time) {
929932
if (time < 0.363636) {
930933
return 7.5625 * time * time;
931-
} else if (time < 0.72727) {
934+
}
935+
936+
if (time < 0.72727) {
932937
time -= 0.545454;
933938
return 7.5625 * time * time + 0.75;
934-
} else if (time < 0.909091) {
939+
}
940+
941+
if (time < 0.909091) {
935942
time -= 0.818182;
936943
return 7.5625 * time * time + 0.9375;
937-
} else {
938-
if (time === 1.0) {
939-
return time;
940-
}
941-
942-
time -= 0.954545;
943-
return 7.5625 * time * time + 0.984375;
944+
}
945+
946+
if (time >= 1.0) {
947+
return time;
944948
}
949+
950+
time -= 0.954545;
951+
return 7.5625 * time * time + 0.984375;
945952
},
946953
bounceInOut: function(time) {
947954
if (time < 0.5) {
948955
// bounce in
949956
if (time > 0.318182) {
950957
time = 1.0 - time * 2.0;
951958
return 0.5 - 3.78125 * time * time;
952-
} else if (time > 0.136365) {
959+
}
960+
961+
if (time > 0.136365) {
953962
time = 0.454546 - time * 2.0;
954963
return 0.125 - 3.78125 * time * time;
955-
} else if (time > 0.045455) {
964+
}
965+
966+
if (time > 0.045455) {
956967
time = 0.181818 - time * 2.0;
957968
return 0.03125 - 3.78125 * time * time;
958-
} else {
959-
time = 0.045455 - time * 2.0;
960-
return 0.007813 - 3.78125 * time * time;
961-
}
969+
}
970+
971+
time = 0.045455 - time * 2.0;
972+
return 0.007813 - 3.78125 * time * time;
962973
}
963974

964975
// bounce out
965976
if (time < 0.681818) {
966977
time = time * 2.0 - 1.0;
967978
return 3.78125 * time * time + 0.5;
968-
} else if (time < 0.863635) {
979+
}
980+
981+
if (time < 0.863635) {
969982
time = time * 2.0 - 1.545454;
970983
return 3.78125 * time * time + 0.875;
971-
} else if (time < 0.954546) {
984+
}
985+
986+
if (time < 0.954546) {
972987
time = time * 2.0 - 1.818182;
973988
return 3.78125 * time * time + 0.96875;
974-
} else {
975-
if (time === 1.0) {
976-
return time;
977-
}
978-
979-
time = time * 2.0 - 1.954545;
980-
return 3.78125 * time * time + 0.992188;
989+
}
990+
991+
if (time >= 1.0) {
992+
return time;
981993
}
994+
995+
time = time * 2.0 - 1.954545;
996+
return 3.78125 * time * time + 0.992188;
982997
},
983998
};
984999

0 commit comments

Comments
 (0)