|
1 | 1 | /** |
2 | 2 | * Copyright (c) 2012-2019 scott.cgi All Rights Reserved. |
3 | 3 | * |
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, |
5 | 5 | * and licensed under the MIT License. |
6 | 6 | * |
7 | 7 | * License: https://github.com/scottcgi/MojoJS/blob/master/LICENSE |
|
707 | 707 |
|
708 | 708 | //--------------------------------------------------------------------------------------------------------------------- |
709 | 709 |
|
710 | | - |
711 | 710 | animator.unitEl.style.cssText = "position:absolute;width:0;display:block;"; |
712 | 711 | animator.unitEl.id = "MojoJS-animation-unitEl"; |
713 | 712 |
|
714 | 713 |
|
715 | 714 | /** |
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 |
721 | 720 | */ |
722 | 721 | animator.easing = { |
723 | 722 |
|
|
735 | 734 | quadraticInOut: function(time) { |
736 | 735 | if (time < 0.5) { |
737 | 736 | 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; |
741 | 740 | }, |
742 | 741 |
|
743 | 742 |
|
|
746 | 745 | }, |
747 | 746 | cubicOut: function(time) { |
748 | 747 | time -= 1.0; |
749 | | - return (time * time * time + 1.0); |
| 748 | + return time * time * time + 1.0; |
750 | 749 | }, |
751 | 750 | cubicInOut: function(time) { |
752 | 751 | if (time < 0.5) { |
753 | 752 | 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; |
758 | 757 | }, |
759 | 758 |
|
760 | 759 |
|
|
763 | 762 | }, |
764 | 763 | quarticOut: function(time) { |
765 | 764 | time -= 1.0; |
766 | | - return time * time * time * (-time) + 1.0; |
| 765 | + return 1.0 - time * time * time * time; |
767 | 766 | }, |
768 | 767 | quarticInOut: function(time) { |
769 | 768 | if (time < 0.5) { |
770 | 769 | 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; |
775 | 774 | }, |
776 | 775 |
|
777 | 776 |
|
|
785 | 784 | quinticInOut: function(time) { |
786 | 785 | if (time < 0.5) { |
787 | 786 | 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; |
792 | 791 | }, |
793 | 792 |
|
794 | 793 |
|
795 | 794 | exponentialIn: function(time) { |
796 | | - if (time === 0.0) { |
| 795 | + if (time <= 0.0) { |
797 | 796 | 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)); |
801 | 800 | }, |
802 | 801 | exponentialOut: function(time) { |
803 | | - if (time === 1.0) { |
| 802 | + if (time >= 1.0) { |
804 | 803 | return time; |
805 | | - } else { |
806 | | - return 1.0 - Math.pow(2.0, -10.0 * time); |
807 | 804 | } |
| 805 | + |
| 806 | + return 1.0 - Math.pow(2.0, -10.0 * time); |
808 | 807 | }, |
809 | 808 | exponentialInOut: function(time) { |
810 | | - if (time === 0.0 || time === 1.0) { |
| 809 | + if (time <= 0.0 || time >= 1.0) { |
811 | 810 | return time; |
812 | 811 | } |
813 | 812 |
|
814 | 813 | if (time < 0.5) { |
815 | 814 | 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)); |
819 | 818 | }, |
820 | 819 |
|
821 | 820 |
|
822 | 821 | sineIn: function(time) { |
823 | 822 | return 1.0 - Math.cos(time * 1.570796326794897); |
824 | 823 | }, |
825 | | - sineOut: function(time, M) { |
| 824 | + sineOut: function(time) { |
826 | 825 | return Math.sin(time * 1.570796326794897); |
827 | 826 | }, |
828 | | - sineInOut: function(time, M) { |
| 827 | + sineInOut: function(time) { |
829 | 828 | return 0.5 * (1.0 - Math.cos(time * 3.141592653589793)); |
830 | 829 | }, |
831 | 830 |
|
|
839 | 838 | circularInOut: function(time) { |
840 | 839 | if (time < 0.5) { |
841 | 840 | 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); |
845 | 841 | } |
| 842 | + |
| 843 | + time = time * 2.0 - 2.0; |
| 844 | + return 0.5 * (Math.sqrt(1.0 - time * time) + 1.0); |
846 | 845 | }, |
847 | 846 |
|
848 | 847 |
|
849 | 848 | elasticIn: function(time) { |
850 | | - if (time === 0.0 || time === 1.0) |
| 849 | + if (time <= 0.0 || time >= 1.0) |
851 | 850 | { |
852 | 851 | return time; |
853 | 852 | } |
854 | 853 |
|
855 | 854 | return -Math.pow(2.0, 10.0 * time - 10.0) * Math.sin((3.33 * time - 3.58) * 6.283185307179586); |
856 | 855 | }, |
857 | 856 | elasticOut: function(time) { |
858 | | - if (time === 0.0 || time === 1.0) |
| 857 | + if (time <= 0.0 || time >= 1.0) |
859 | 858 | { |
860 | 859 | return time; |
861 | 860 | } |
862 | 861 |
|
863 | 862 | return Math.pow(2.0, -10.0 * time) * Math.sin((3.33 * time - 0.25) * 6.283185307179586) + 1.0; |
864 | 863 | }, |
865 | 864 | elasticInOut: function(time) { |
866 | | - if (time === 0.0 || time === 1.0) { |
| 865 | + if (time <= 0.0 || time >= 1.0) { |
867 | 866 | return time; |
868 | 867 | } |
869 | 868 |
|
870 | 869 | if (time < 0.5) { |
871 | 870 | 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; |
875 | 874 | }, |
876 | 875 |
|
877 | 876 |
|
|
885 | 884 | backInOut: function(time) { |
886 | 885 | if (time < 0.5) { |
887 | 886 | 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; |
892 | 891 | }, |
893 | 892 | backInExponentialOut: function(time) { |
894 | 893 | if (time < 0.5) { |
895 | 894 | 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)); |
899 | 898 | }, |
900 | 899 | backInElasticOut: function(time) { |
901 | 900 | if (time < 0.5) { |
902 | 901 | 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; |
906 | 905 | }, |
907 | 906 |
|
908 | 907 |
|
909 | 908 | bounceIn: function(time) { |
910 | 909 | if (time > 0.636364) { |
911 | 910 | time = 1.0 - time; |
912 | 911 | return 1.0 - 7.5625 * time * time; |
913 | | - } else if (time > 0.27273) { |
| 912 | + } |
| 913 | + |
| 914 | + if (time > 0.27273) { |
914 | 915 | time = 0.454546 - time; |
915 | 916 | return 0.25 - 7.5625 * time * time; |
916 | | - } else if (time > 0.090909) { |
| 917 | + } |
| 918 | + |
| 919 | + if (time > 0.090909) { |
917 | 920 | time = 0.181818 - time; |
918 | 921 | 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; |
926 | 926 | } |
| 927 | + |
| 928 | + time = 0.045455 - time; |
| 929 | + return 0.015625 - 7.5625 * time * time; |
927 | 930 | }, |
928 | 931 | bounceOut: function(time) { |
929 | 932 | if (time < 0.363636) { |
930 | 933 | return 7.5625 * time * time; |
931 | | - } else if (time < 0.72727) { |
| 934 | + } |
| 935 | + |
| 936 | + if (time < 0.72727) { |
932 | 937 | time -= 0.545454; |
933 | 938 | return 7.5625 * time * time + 0.75; |
934 | | - } else if (time < 0.909091) { |
| 939 | + } |
| 940 | + |
| 941 | + if (time < 0.909091) { |
935 | 942 | time -= 0.818182; |
936 | 943 | 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; |
944 | 948 | } |
| 949 | + |
| 950 | + time -= 0.954545; |
| 951 | + return 7.5625 * time * time + 0.984375; |
945 | 952 | }, |
946 | 953 | bounceInOut: function(time) { |
947 | 954 | if (time < 0.5) { |
948 | 955 | // bounce in |
949 | 956 | if (time > 0.318182) { |
950 | 957 | time = 1.0 - time * 2.0; |
951 | 958 | return 0.5 - 3.78125 * time * time; |
952 | | - } else if (time > 0.136365) { |
| 959 | + } |
| 960 | + |
| 961 | + if (time > 0.136365) { |
953 | 962 | time = 0.454546 - time * 2.0; |
954 | 963 | return 0.125 - 3.78125 * time * time; |
955 | | - } else if (time > 0.045455) { |
| 964 | + } |
| 965 | + |
| 966 | + if (time > 0.045455) { |
956 | 967 | time = 0.181818 - time * 2.0; |
957 | 968 | 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; |
962 | 973 | } |
963 | 974 |
|
964 | 975 | // bounce out |
965 | 976 | if (time < 0.681818) { |
966 | 977 | time = time * 2.0 - 1.0; |
967 | 978 | return 3.78125 * time * time + 0.5; |
968 | | - } else if (time < 0.863635) { |
| 979 | + } |
| 980 | + |
| 981 | + if (time < 0.863635) { |
969 | 982 | time = time * 2.0 - 1.545454; |
970 | 983 | return 3.78125 * time * time + 0.875; |
971 | | - } else if (time < 0.954546) { |
| 984 | + } |
| 985 | + |
| 986 | + if (time < 0.954546) { |
972 | 987 | time = time * 2.0 - 1.818182; |
973 | 988 | 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; |
981 | 993 | } |
| 994 | + |
| 995 | + time = time * 2.0 - 1.954545; |
| 996 | + return 3.78125 * time * time + 0.992188; |
982 | 997 | }, |
983 | 998 | }; |
984 | 999 |
|
|
0 commit comments