1+ require ( '../../../../src/common/overlay/levelRenderer/Easing' ) ;
2+
3+ describe ( 'Easing' , function ( ) {
4+ var originalTimeout ;
5+ beforeEach ( function ( ) {
6+ originalTimeout = jasmine . DEFAULT_TIMEOUT_INTERVAL ;
7+ jasmine . DEFAULT_TIMEOUT_INTERVAL = 50000 ;
8+ } ) ;
9+ afterEach ( function ( ) {
10+ jasmine . DEFAULT_TIMEOUT_INTERVAL = originalTimeout ;
11+ } ) ;
12+
13+ // 线性
14+ it ( 'init_Linear' , function ( ) {
15+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
16+ var k = init . Linear ( 10 ) ;
17+ expect ( init ) . not . toBeNull ( ) ;
18+ expect ( k ) . toEqual ( 10 ) ;
19+ init . destroy ( ) ;
20+ } ) ;
21+
22+ // 二次方的缓动(t^2)
23+ it ( 'QuadraticIn' , function ( ) {
24+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
25+ var k = init . QuadraticIn ( 10 ) ;
26+ expect ( k ) . toEqual ( 100 ) ;
27+ } ) ;
28+
29+ it ( 'QuadraticOut' , function ( ) {
30+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
31+ var k = init . QuadraticOut ( 10 ) ;
32+ expect ( k ) . toEqual ( - 80 ) ;
33+ } ) ;
34+
35+ it ( 'QuadraticInOut_k = 1' , function ( ) {
36+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
37+ var k = init . QuadraticInOut ( 1 ) ;
38+ expect ( k ) . toEqual ( 1 ) ;
39+ } ) ;
40+
41+ it ( 'QuadraticInOut_k = -1' , function ( ) {
42+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
43+ var k = init . QuadraticInOut ( - 1 ) ;
44+ expect ( k ) . toEqual ( 2 ) ;
45+ } ) ;
46+
47+ // 三次方的缓动(t^3)
48+ it ( 'CubicIn' , function ( ) {
49+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
50+ var k = init . CubicIn ( 3 ) ;
51+ expect ( k ) . toEqual ( 27 ) ;
52+ } ) ;
53+ it ( 'CubicOut' , function ( ) {
54+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
55+ var k = init . CubicOut ( 3 ) ;
56+ expect ( k ) . toEqual ( 9 ) ;
57+ } ) ;
58+ it ( 'CubicInOut_k = 2' , function ( ) {
59+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
60+ var k = init . CubicInOut ( 2 ) ;
61+ expect ( k ) . toEqual ( 5 ) ;
62+ } ) ;
63+ it ( 'CubicInOut_k = -1' , function ( ) {
64+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
65+ var k = init . CubicInOut ( - 1 ) ;
66+ expect ( k ) . toEqual ( - 4 ) ;
67+ } ) ;
68+
69+ // 四次方的缓动(t^4)
70+ it ( 'QuarticIn' , function ( ) {
71+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
72+ var k = init . QuarticIn ( 2 ) ;
73+ expect ( k ) . toEqual ( 16 ) ;
74+ } ) ;
75+ it ( 'QuarticOut' , function ( ) {
76+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
77+ var k = init . QuarticOut ( 3 ) ;
78+ expect ( k ) . toEqual ( - 15 ) ;
79+ } ) ;
80+
81+ it ( 'QuarticInOut_k = 2' , function ( ) {
82+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
83+ var k = init . QuarticInOut ( 2 ) ;
84+ expect ( k ) . toEqual ( - 7 ) ;
85+ } ) ;
86+
87+ it ( 'QuarticInOut_k = -2' , function ( ) {
88+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
89+ var k = init . QuarticInOut ( - 1 ) ;
90+ expect ( k ) . toEqual ( 8 ) ;
91+ } ) ;
92+
93+ // 五次方的缓动(t^5)
94+ it ( 'QuinticIn' , function ( ) {
95+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
96+ var k = init . QuinticIn ( 2 ) ;
97+ expect ( k ) . toEqual ( 32 ) ;
98+ } ) ;
99+
100+ it ( 'QuinticOut' , function ( ) {
101+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
102+ var k = init . QuinticOut ( 2 ) ;
103+ expect ( k ) . toEqual ( 2 ) ;
104+ } ) ;
105+
106+ it ( 'QuinticInOut_k = 2 ' , function ( ) {
107+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
108+ var k = init . QuinticInOut ( 2 ) ;
109+ expect ( k ) . toEqual ( 17 ) ;
110+ } ) ;
111+ it ( 'QuinticInOut_k = -2 ' , function ( ) {
112+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
113+ var k = init . QuinticInOut ( - 2 ) ;
114+ expect ( k ) . toEqual ( - 512 ) ;
115+ } ) ;
116+
117+ // 正弦曲线的缓动(sin(t))
118+ it ( 'SinusoidalIn' , function ( ) {
119+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
120+ var k = init . SinusoidalIn ( 2 ) ;
121+ expect ( k ) . toEqual ( 2 ) ;
122+ } ) ;
123+ it ( 'SinusoidalOut' , function ( ) {
124+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
125+ var k = init . SinusoidalOut ( 2 ) ;
126+ expect ( k ) . toEqual ( 1.2246467991473532e-16 ) ;
127+ } ) ;
128+ it ( 'SinusoidalInOut' , function ( ) {
129+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
130+ var k = init . SinusoidalInOut ( 2 ) ;
131+ expect ( k ) . toEqual ( 0 ) ;
132+ } ) ;
133+
134+ // 指数曲线的缓动(2^t)
135+ it ( 'ExponentialIn' , function ( ) {
136+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
137+ var k = init . ExponentialIn ( 2 ) ;
138+ expect ( k ) . toEqual ( 1024 ) ;
139+ } ) ;
140+ it ( 'ExponentialOut' , function ( ) {
141+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
142+ var k = init . ExponentialOut ( 1 ) ;
143+ expect ( k ) . toEqual ( 1 ) ;
144+ } ) ;
145+ it ( 'ExponentialInOut_k = 0' , function ( ) {
146+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
147+ var k = init . ExponentialInOut ( 0 ) ;
148+ expect ( k ) . toEqual ( 0 ) ;
149+ } ) ;
150+ it ( 'ExponentialInOut_k = 1' , function ( ) {
151+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
152+ var k = init . ExponentialInOut ( 1 ) ;
153+ expect ( k ) . toEqual ( 1 ) ;
154+ } ) ;
155+ it ( 'ExponentialInOut_k = 10' , function ( ) {
156+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
157+ var k = init . ExponentialInOut ( 10 ) ;
158+ expect ( k ) . toEqual ( 1 ) ;
159+ } ) ;
160+ it ( 'ExponentialInOut_k = -1' , function ( ) {
161+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
162+ var k = init . ExponentialInOut ( - 1 ) ;
163+ expect ( k ) . toEqual ( 4.656612873077393e-10 ) ;
164+ } ) ;
165+
166+ // 圆形曲线的缓动(sqrt(1-t^2))
167+ it ( 'CircularIn' , function ( ) {
168+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
169+ var k = init . CircularIn ( 1 ) ;
170+ expect ( k ) . toEqual ( 1 ) ;
171+ } ) ;
172+ it ( 'CircularOut' , function ( ) {
173+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
174+ var k = init . CircularOut ( 2 ) ;
175+ expect ( k ) . toEqual ( 0 ) ;
176+ } ) ;
177+ it ( 'CircularInOut_k = 1' , function ( ) {
178+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
179+ var k = init . CircularInOut ( 1 ) ;
180+ expect ( k ) . toEqual ( 1 ) ;
181+ } ) ;
182+ it ( 'CircularInOut_k = 0' , function ( ) {
183+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
184+ var k = init . CircularInOut ( 0 ) ;
185+ expect ( k ) . toEqual ( - 0 ) ;
186+ } ) ;
187+
188+ //创建类似于弹簧在停止前来回振荡的动画
189+ it ( 'ElasticIn_k = 0' , function ( ) {
190+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
191+ var k = init . ElasticIn ( 0 ) ;
192+ expect ( k ) . toEqual ( 0 ) ;
193+ } ) ;
194+ it ( 'ElasticIn_k = 1' , function ( ) {
195+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
196+ var k = init . ElasticIn ( 1 ) ;
197+ expect ( k ) . toEqual ( 1 ) ;
198+ } ) ;
199+ it ( 'ElasticIn_k = 2' , function ( ) {
200+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
201+ var k = init . ElasticIn ( 2 ) ;
202+ expect ( k ) . toEqual ( - 1024 ) ;
203+ } ) ;
204+ it ( 'ElasticOut_k = 0' , function ( ) {
205+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
206+ var k = init . ElasticOut ( 0 ) ;
207+ expect ( k ) . toEqual ( 0 ) ;
208+ } ) ;
209+ it ( 'ElasticOut_k = 1' , function ( ) {
210+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
211+ var k = init . ElasticOut ( 1 ) ;
212+ expect ( k ) . toEqual ( 1 ) ;
213+ } ) ;
214+ it ( 'ElasticOut_k = -1' , function ( ) {
215+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
216+ var k = init . ElasticOut ( - 1 ) ;
217+ expect ( k ) . toEqual ( 1025 ) ;
218+ } ) ;
219+ it ( 'ElasticInOut_k = 0' , function ( ) {
220+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
221+ var k = init . ElasticInOut ( 0 ) ;
222+ expect ( k ) . toEqual ( 0 ) ;
223+ } ) ;
224+ it ( 'ElasticInOut_k = 1' , function ( ) {
225+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
226+ var k = init . ElasticInOut ( 1 ) ;
227+ expect ( k ) . toEqual ( 1 ) ;
228+ } ) ;
229+ it ( 'ElasticInOut_k = -1' , function ( ) {
230+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
231+ var k = init . ElasticInOut ( - 1 ) ;
232+ expect ( k ) . toEqual ( - 4.656612873077393e-10 ) ;
233+ } ) ;
234+ it ( 'ElasticInOut_k = 10' , function ( ) {
235+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
236+ var k = init . ElasticInOut ( 10 ) ;
237+ expect ( k ) . toEqual ( 1 ) ;
238+ } ) ;
239+
240+ //在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动
241+ it ( 'BackIn' , function ( ) {
242+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
243+ var k = init . BackIn ( 10 ) ;
244+ expect ( k ) . toEqual ( 2531.422 ) ;
245+ } ) ;
246+ it ( 'BackOut' , function ( ) {
247+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
248+ var k = init . BackOut ( 10 ) ;
249+ expect ( k ) . toEqual ( 2108.2798 ) ;
250+ } ) ;
251+ it ( 'BackInOut_k = 1' , function ( ) {
252+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
253+ var k = init . BackInOut ( 1 ) ;
254+ expect ( k ) . toEqual ( 1 ) ;
255+ } ) ;
256+ it ( 'BackInOut_k = -2' , function ( ) {
257+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
258+ var k = init . BackInOut ( - 10 ) ;
259+ expect ( k ) . toEqual ( - 14898.6199 ) ;
260+ } ) ;
261+
262+ // 创建弹跳效果
263+ it ( 'BounceIn' , function ( ) {
264+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
265+ var k = init . BounceIn ( 2 ) ;
266+ expect ( k ) . toEqual ( - 6.5625 ) ;
267+ } ) ;
268+ it ( 'BounceOut_k = 0.7' , function ( ) {
269+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
270+ var k = init . BounceOut ( 0.7 ) ;
271+ expect ( k ) . toEqual ( 0.930625 ) ;
272+ } ) ;
273+ it ( 'BounceOut_k = 0.8' , function ( ) {
274+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
275+ var k = init . BounceOut ( 0.8 ) ;
276+ expect ( k ) . toEqual ( 0.94 ) ;
277+ } ) ;
278+ it ( 'BounceOut_k = 1' , function ( ) {
279+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
280+ var k = init . BounceOut ( 1 ) ;
281+ expect ( k ) . toEqual ( 1 ) ;
282+ } ) ;
283+ it ( 'BounceInOut_k = -1' , function ( ) {
284+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
285+ var k = init . BounceInOut ( - 1 ) ;
286+ expect ( k ) . toEqual ( - 15.8125 ) ;
287+ } ) ;
288+ it ( 'BounceInOut_k = 1' , function ( ) {
289+ var init = new SuperMap . LevelRenderer . Animation . easing ( ) ;
290+ var k = init . BounceInOut ( 1 ) ;
291+ expect ( k ) . toEqual ( 1 ) ;
292+ } ) ;
293+ } ) ;
0 commit comments