EasingFunction.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. import Tween from '../ThirdParty/Tween.js';
  2. import freezeObject from './freezeObject.js';
  3. /**
  4. * Easing functions for use with TweenCollection. These function are from
  5. * {@link https://github.com/sole/tween.js/|Tween.js} and Robert Penner. See the
  6. * {@link http://sole.github.io/tween.js/examples/03_graphs.html|Tween.js graphs for each function}.
  7. *
  8. * @exports EasingFunction
  9. */
  10. var EasingFunction = {
  11. /**
  12. * Linear easing.
  13. *
  14. * @type {EasingFunction~Callback}
  15. * @constant
  16. */
  17. LINEAR_NONE : Tween.Easing.Linear.None,
  18. /**
  19. * Quadratic in.
  20. *
  21. * @type {EasingFunction~Callback}
  22. * @constant
  23. */
  24. QUADRACTIC_IN : Tween.Easing.Quadratic.In,
  25. /**
  26. * Quadratic out.
  27. *
  28. * @type {EasingFunction~Callback}
  29. * @constant
  30. */
  31. QUADRACTIC_OUT : Tween.Easing.Quadratic.Out,
  32. /**
  33. * Quadratic in then out.
  34. *
  35. * @type {EasingFunction~Callback}
  36. * @constant
  37. */
  38. QUADRACTIC_IN_OUT : Tween.Easing.Quadratic.InOut,
  39. /**
  40. * Cubic in.
  41. *
  42. * @type {EasingFunction~Callback}
  43. * @constant
  44. */
  45. CUBIC_IN : Tween.Easing.Cubic.In,
  46. /**
  47. * Cubic out.
  48. *
  49. * @type {EasingFunction~Callback}
  50. * @constant
  51. */
  52. CUBIC_OUT : Tween.Easing.Cubic.Out,
  53. /**
  54. * Cubic in then out.
  55. *
  56. * @type {EasingFunction~Callback}
  57. * @constant
  58. */
  59. CUBIC_IN_OUT : Tween.Easing.Cubic.InOut,
  60. /**
  61. * Quartic in.
  62. *
  63. * @type {EasingFunction~Callback}
  64. * @constant
  65. */
  66. QUARTIC_IN : Tween.Easing.Quartic.In,
  67. /**
  68. * Quartic out.
  69. *
  70. * @type {EasingFunction~Callback}
  71. * @constant
  72. */
  73. QUARTIC_OUT : Tween.Easing.Quartic.Out,
  74. /**
  75. * Quartic in then out.
  76. *
  77. * @type {EasingFunction~Callback}
  78. * @constant
  79. */
  80. QUARTIC_IN_OUT : Tween.Easing.Quartic.InOut,
  81. /**
  82. * Quintic in.
  83. *
  84. * @type {EasingFunction~Callback}
  85. * @constant
  86. */
  87. QUINTIC_IN : Tween.Easing.Quintic.In,
  88. /**
  89. * Quintic out.
  90. *
  91. * @type {EasingFunction~Callback}
  92. * @constant
  93. */
  94. QUINTIC_OUT : Tween.Easing.Quintic.Out,
  95. /**
  96. * Quintic in then out.
  97. *
  98. * @type {EasingFunction~Callback}
  99. * @constant
  100. */
  101. QUINTIC_IN_OUT : Tween.Easing.Quintic.InOut,
  102. /**
  103. * Sinusoidal in.
  104. *
  105. * @type {EasingFunction~Callback}
  106. * @constant
  107. */
  108. SINUSOIDAL_IN : Tween.Easing.Sinusoidal.In,
  109. /**
  110. * Sinusoidal out.
  111. *
  112. * @type {EasingFunction~Callback}
  113. * @constant
  114. */
  115. SINUSOIDAL_OUT : Tween.Easing.Sinusoidal.Out,
  116. /**
  117. * Sinusoidal in then out.
  118. *
  119. * @type {EasingFunction~Callback}
  120. * @constant
  121. */
  122. SINUSOIDAL_IN_OUT : Tween.Easing.Sinusoidal.InOut,
  123. /**
  124. * Exponential in.
  125. *
  126. * @type {EasingFunction~Callback}
  127. * @constant
  128. */
  129. EXPONENTIAL_IN : Tween.Easing.Exponential.In,
  130. /**
  131. * Exponential out.
  132. *
  133. * @type {EasingFunction~Callback}
  134. * @constant
  135. */
  136. EXPONENTIAL_OUT : Tween.Easing.Exponential.Out,
  137. /**
  138. * Exponential in then out.
  139. *
  140. * @type {EasingFunction~Callback}
  141. * @constant
  142. */
  143. EXPONENTIAL_IN_OUT : Tween.Easing.Exponential.InOut,
  144. /**
  145. * Circular in.
  146. *
  147. * @type {EasingFunction~Callback}
  148. * @constant
  149. */
  150. CIRCULAR_IN : Tween.Easing.Circular.In,
  151. /**
  152. * Circular out.
  153. *
  154. * @type {EasingFunction~Callback}
  155. * @constant
  156. */
  157. CIRCULAR_OUT : Tween.Easing.Circular.Out,
  158. /**
  159. * Circular in then out.
  160. *
  161. * @type {EasingFunction~Callback}
  162. * @constant
  163. */
  164. CIRCULAR_IN_OUT : Tween.Easing.Circular.InOut,
  165. /**
  166. * Elastic in.
  167. *
  168. * @type {EasingFunction~Callback}
  169. * @constant
  170. */
  171. ELASTIC_IN : Tween.Easing.Elastic.In,
  172. /**
  173. * Elastic out.
  174. *
  175. * @type {EasingFunction~Callback}
  176. * @constant
  177. */
  178. ELASTIC_OUT : Tween.Easing.Elastic.Out,
  179. /**
  180. * Elastic in then out.
  181. *
  182. * @type {EasingFunction~Callback}
  183. * @constant
  184. */
  185. ELASTIC_IN_OUT : Tween.Easing.Elastic.InOut,
  186. /**
  187. * Back in.
  188. *
  189. * @type {EasingFunction~Callback}
  190. * @constant
  191. */
  192. BACK_IN : Tween.Easing.Back.In,
  193. /**
  194. * Back out.
  195. *
  196. * @type {EasingFunction~Callback}
  197. * @constant
  198. */
  199. BACK_OUT : Tween.Easing.Back.Out,
  200. /**
  201. * Back in then out.
  202. *
  203. * @type {EasingFunction~Callback}
  204. * @constant
  205. */
  206. BACK_IN_OUT : Tween.Easing.Back.InOut,
  207. /**
  208. * Bounce in.
  209. *
  210. * @type {EasingFunction~Callback}
  211. * @constant
  212. */
  213. BOUNCE_IN : Tween.Easing.Bounce.In,
  214. /**
  215. * Bounce out.
  216. *
  217. * @type {EasingFunction~Callback}
  218. * @constant
  219. */
  220. BOUNCE_OUT : Tween.Easing.Bounce.Out,
  221. /**
  222. * Bounce in then out.
  223. *
  224. * @type {EasingFunction~Callback}
  225. * @constant
  226. */
  227. BOUNCE_IN_OUT : Tween.Easing.Bounce.InOut
  228. };
  229. /**
  230. * Function interface for implementing a custom easing function.
  231. * @callback EasingFunction~Callback
  232. * @param {Number} time The time in the range <code>[0, 1]</code>.
  233. * @returns {Number} The value of the function at the given time.
  234. *
  235. * @example
  236. * function quadraticIn(time) {
  237. * return time * time;
  238. * }
  239. *
  240. * @example
  241. * function quadraticOut(time) {
  242. * return time * (2.0 - time);
  243. * }
  244. */
  245. export default freezeObject(EasingFunction);