@tweenjs/tween.js 18.3.2 → 18.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -34
- package/dist/index.d.ts +273 -0
- package/dist/tween.amd.js +792 -961
- package/dist/tween.cjs.js +786 -955
- package/dist/tween.esm.js +786 -955
- package/dist/tween.umd.js +795 -964
- package/package.json +54 -31
- package/.eslintrc.json +0 -100
- package/.travis.yml +0 -26
- package/CODE_OF_CONDUCT.md +0 -75
- package/README_zh-CN.md +0 -297
- package/rollup.config.js +0 -24
- package/src/Tween.js +0 -961
package/src/Tween.js
DELETED
@@ -1,961 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Tween.js - Licensed under the MIT license
|
3
|
-
* https://github.com/tweenjs/tween.js
|
4
|
-
* ----------------------------------------------
|
5
|
-
*
|
6
|
-
* See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.
|
7
|
-
* Thank you all, you're awesome!
|
8
|
-
*/
|
9
|
-
|
10
|
-
|
11
|
-
var _Group = function () {
|
12
|
-
this._tweens = {};
|
13
|
-
this._tweensAddedDuringUpdate = {};
|
14
|
-
};
|
15
|
-
|
16
|
-
_Group.prototype = {
|
17
|
-
getAll: function () {
|
18
|
-
|
19
|
-
return Object.keys(this._tweens).map(function (tweenId) {
|
20
|
-
return this._tweens[tweenId];
|
21
|
-
}.bind(this));
|
22
|
-
|
23
|
-
},
|
24
|
-
|
25
|
-
removeAll: function () {
|
26
|
-
|
27
|
-
this._tweens = {};
|
28
|
-
|
29
|
-
},
|
30
|
-
|
31
|
-
add: function (tween) {
|
32
|
-
|
33
|
-
this._tweens[tween.getId()] = tween;
|
34
|
-
this._tweensAddedDuringUpdate[tween.getId()] = tween;
|
35
|
-
|
36
|
-
},
|
37
|
-
|
38
|
-
remove: function (tween) {
|
39
|
-
|
40
|
-
delete this._tweens[tween.getId()];
|
41
|
-
delete this._tweensAddedDuringUpdate[tween.getId()];
|
42
|
-
|
43
|
-
},
|
44
|
-
|
45
|
-
update: function (time, preserve) {
|
46
|
-
|
47
|
-
var tweenIds = Object.keys(this._tweens);
|
48
|
-
|
49
|
-
if (tweenIds.length === 0) {
|
50
|
-
return false;
|
51
|
-
}
|
52
|
-
|
53
|
-
time = time !== undefined ? time : TWEEN.now();
|
54
|
-
|
55
|
-
// Tweens are updated in "batches". If you add a new tween during an
|
56
|
-
// update, then the new tween will be updated in the next batch.
|
57
|
-
// If you remove a tween during an update, it may or may not be updated.
|
58
|
-
// However, if the removed tween was added during the current batch,
|
59
|
-
// then it will not be updated.
|
60
|
-
while (tweenIds.length > 0) {
|
61
|
-
this._tweensAddedDuringUpdate = {};
|
62
|
-
|
63
|
-
for (var i = 0; i < tweenIds.length; i++) {
|
64
|
-
|
65
|
-
var tween = this._tweens[tweenIds[i]];
|
66
|
-
|
67
|
-
if (tween && tween.update(time) === false) {
|
68
|
-
tween._isPlaying = false;
|
69
|
-
|
70
|
-
if (!preserve) {
|
71
|
-
delete this._tweens[tweenIds[i]];
|
72
|
-
}
|
73
|
-
}
|
74
|
-
}
|
75
|
-
|
76
|
-
tweenIds = Object.keys(this._tweensAddedDuringUpdate);
|
77
|
-
}
|
78
|
-
|
79
|
-
return true;
|
80
|
-
|
81
|
-
}
|
82
|
-
};
|
83
|
-
|
84
|
-
var TWEEN = new _Group();
|
85
|
-
|
86
|
-
TWEEN.Group = _Group;
|
87
|
-
TWEEN._nextId = 0;
|
88
|
-
TWEEN.nextId = function () {
|
89
|
-
return TWEEN._nextId++;
|
90
|
-
};
|
91
|
-
|
92
|
-
|
93
|
-
// Include a performance.now polyfill.
|
94
|
-
// In node.js, use process.hrtime.
|
95
|
-
if (typeof (self) === 'undefined' && typeof (process) !== 'undefined' && process.hrtime) {
|
96
|
-
TWEEN.now = function () {
|
97
|
-
var time = process.hrtime();
|
98
|
-
|
99
|
-
// Convert [seconds, nanoseconds] to milliseconds.
|
100
|
-
return time[0] * 1000 + time[1] / 1000000;
|
101
|
-
};
|
102
|
-
}
|
103
|
-
// In a browser, use self.performance.now if it is available.
|
104
|
-
else if (typeof (self) !== 'undefined' &&
|
105
|
-
self.performance !== undefined &&
|
106
|
-
self.performance.now !== undefined) {
|
107
|
-
// This must be bound, because directly assigning this function
|
108
|
-
// leads to an invocation exception in Chrome.
|
109
|
-
TWEEN.now = self.performance.now.bind(self.performance);
|
110
|
-
}
|
111
|
-
// Use Date.now if it is available.
|
112
|
-
else if (Date.now !== undefined) {
|
113
|
-
TWEEN.now = Date.now;
|
114
|
-
}
|
115
|
-
// Otherwise, use 'new Date().getTime()'.
|
116
|
-
else {
|
117
|
-
TWEEN.now = function () {
|
118
|
-
return new Date().getTime();
|
119
|
-
};
|
120
|
-
}
|
121
|
-
|
122
|
-
|
123
|
-
TWEEN.Tween = function (object, group) {
|
124
|
-
this._isPaused = false;
|
125
|
-
this._pauseStart = null;
|
126
|
-
this._object = object;
|
127
|
-
this._valuesStart = {};
|
128
|
-
this._valuesEnd = {};
|
129
|
-
this._valuesStartRepeat = {};
|
130
|
-
this._duration = 1000;
|
131
|
-
this._repeat = 0;
|
132
|
-
this._repeatDelayTime = undefined;
|
133
|
-
this._yoyo = false;
|
134
|
-
this._isPlaying = false;
|
135
|
-
this._reversed = false;
|
136
|
-
this._delayTime = 0;
|
137
|
-
this._startTime = null;
|
138
|
-
this._easingFunction = TWEEN.Easing.Linear.None;
|
139
|
-
this._interpolationFunction = TWEEN.Interpolation.Linear;
|
140
|
-
this._chainedTweens = [];
|
141
|
-
this._onStartCallback = null;
|
142
|
-
this._onStartCallbackFired = false;
|
143
|
-
this._onUpdateCallback = null;
|
144
|
-
this._onRepeatCallback = null;
|
145
|
-
this._onCompleteCallback = null;
|
146
|
-
this._onStopCallback = null;
|
147
|
-
this._group = group || TWEEN;
|
148
|
-
this._id = TWEEN.nextId();
|
149
|
-
|
150
|
-
};
|
151
|
-
|
152
|
-
TWEEN.Tween.prototype = {
|
153
|
-
getId: function () {
|
154
|
-
return this._id;
|
155
|
-
},
|
156
|
-
|
157
|
-
isPlaying: function () {
|
158
|
-
return this._isPlaying;
|
159
|
-
},
|
160
|
-
|
161
|
-
isPaused: function () {
|
162
|
-
return this._isPaused;
|
163
|
-
},
|
164
|
-
|
165
|
-
to: function (properties, duration) {
|
166
|
-
|
167
|
-
this._valuesEnd = Object.create(properties);
|
168
|
-
|
169
|
-
if (duration !== undefined) {
|
170
|
-
this._duration = duration;
|
171
|
-
}
|
172
|
-
|
173
|
-
return this;
|
174
|
-
|
175
|
-
},
|
176
|
-
|
177
|
-
duration: function duration(d) {
|
178
|
-
this._duration = d;
|
179
|
-
return this;
|
180
|
-
},
|
181
|
-
|
182
|
-
start: function (time) {
|
183
|
-
|
184
|
-
this._group.add(this);
|
185
|
-
|
186
|
-
this._isPlaying = true;
|
187
|
-
|
188
|
-
this._isPaused = false;
|
189
|
-
|
190
|
-
this._onStartCallbackFired = false;
|
191
|
-
|
192
|
-
this._startTime = time !== undefined ? typeof time === 'string' ? TWEEN.now() + parseFloat(time) : time : TWEEN.now();
|
193
|
-
this._startTime += this._delayTime;
|
194
|
-
|
195
|
-
for (var property in this._valuesEnd) {
|
196
|
-
|
197
|
-
// Check if an Array was provided as property value
|
198
|
-
if (this._valuesEnd[property] instanceof Array) {
|
199
|
-
|
200
|
-
if (this._valuesEnd[property].length === 0) {
|
201
|
-
continue;
|
202
|
-
}
|
203
|
-
|
204
|
-
// Create a local copy of the Array with the start value at the front
|
205
|
-
this._valuesEnd[property] = [this._object[property]].concat(this._valuesEnd[property]);
|
206
|
-
|
207
|
-
}
|
208
|
-
|
209
|
-
// If `to()` specifies a property that doesn't exist in the source object,
|
210
|
-
// we should not set that property in the object
|
211
|
-
if (this._object[property] === undefined) {
|
212
|
-
continue;
|
213
|
-
}
|
214
|
-
|
215
|
-
// Save the starting value, but only once.
|
216
|
-
if (typeof(this._valuesStart[property]) === 'undefined') {
|
217
|
-
this._valuesStart[property] = this._object[property];
|
218
|
-
}
|
219
|
-
|
220
|
-
if ((this._valuesStart[property] instanceof Array) === false) {
|
221
|
-
this._valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings
|
222
|
-
}
|
223
|
-
|
224
|
-
this._valuesStartRepeat[property] = this._valuesStart[property] || 0;
|
225
|
-
|
226
|
-
}
|
227
|
-
|
228
|
-
return this;
|
229
|
-
|
230
|
-
},
|
231
|
-
|
232
|
-
stop: function () {
|
233
|
-
|
234
|
-
if (!this._isPlaying) {
|
235
|
-
return this;
|
236
|
-
}
|
237
|
-
|
238
|
-
this._group.remove(this);
|
239
|
-
|
240
|
-
this._isPlaying = false;
|
241
|
-
|
242
|
-
this._isPaused = false;
|
243
|
-
|
244
|
-
if (this._onStopCallback !== null) {
|
245
|
-
this._onStopCallback(this._object);
|
246
|
-
}
|
247
|
-
|
248
|
-
this.stopChainedTweens();
|
249
|
-
return this;
|
250
|
-
|
251
|
-
},
|
252
|
-
|
253
|
-
end: function () {
|
254
|
-
|
255
|
-
this.update(Infinity);
|
256
|
-
return this;
|
257
|
-
|
258
|
-
},
|
259
|
-
|
260
|
-
pause: function(time) {
|
261
|
-
|
262
|
-
if (this._isPaused || !this._isPlaying) {
|
263
|
-
return this;
|
264
|
-
}
|
265
|
-
|
266
|
-
this._isPaused = true;
|
267
|
-
|
268
|
-
this._pauseStart = time === undefined ? TWEEN.now() : time;
|
269
|
-
|
270
|
-
this._group.remove(this);
|
271
|
-
|
272
|
-
return this;
|
273
|
-
|
274
|
-
},
|
275
|
-
|
276
|
-
resume: function(time) {
|
277
|
-
|
278
|
-
if (!this._isPaused || !this._isPlaying) {
|
279
|
-
return this;
|
280
|
-
}
|
281
|
-
|
282
|
-
this._isPaused = false;
|
283
|
-
|
284
|
-
this._startTime += (time === undefined ? TWEEN.now() : time)
|
285
|
-
- this._pauseStart;
|
286
|
-
|
287
|
-
this._pauseStart = 0;
|
288
|
-
|
289
|
-
this._group.add(this);
|
290
|
-
|
291
|
-
return this;
|
292
|
-
|
293
|
-
},
|
294
|
-
|
295
|
-
stopChainedTweens: function () {
|
296
|
-
|
297
|
-
for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {
|
298
|
-
this._chainedTweens[i].stop();
|
299
|
-
}
|
300
|
-
|
301
|
-
},
|
302
|
-
|
303
|
-
group: function (group) {
|
304
|
-
this._group = group;
|
305
|
-
return this;
|
306
|
-
},
|
307
|
-
|
308
|
-
delay: function (amount) {
|
309
|
-
|
310
|
-
this._delayTime = amount;
|
311
|
-
return this;
|
312
|
-
|
313
|
-
},
|
314
|
-
|
315
|
-
repeat: function (times) {
|
316
|
-
|
317
|
-
this._repeat = times;
|
318
|
-
return this;
|
319
|
-
|
320
|
-
},
|
321
|
-
|
322
|
-
repeatDelay: function (amount) {
|
323
|
-
|
324
|
-
this._repeatDelayTime = amount;
|
325
|
-
return this;
|
326
|
-
|
327
|
-
},
|
328
|
-
|
329
|
-
yoyo: function (yoyo) {
|
330
|
-
|
331
|
-
this._yoyo = yoyo;
|
332
|
-
return this;
|
333
|
-
|
334
|
-
},
|
335
|
-
|
336
|
-
easing: function (easingFunction) {
|
337
|
-
|
338
|
-
this._easingFunction = easingFunction;
|
339
|
-
return this;
|
340
|
-
|
341
|
-
},
|
342
|
-
|
343
|
-
interpolation: function (interpolationFunction) {
|
344
|
-
|
345
|
-
this._interpolationFunction = interpolationFunction;
|
346
|
-
return this;
|
347
|
-
|
348
|
-
},
|
349
|
-
|
350
|
-
chain: function () {
|
351
|
-
|
352
|
-
this._chainedTweens = arguments;
|
353
|
-
return this;
|
354
|
-
|
355
|
-
},
|
356
|
-
|
357
|
-
onStart: function (callback) {
|
358
|
-
|
359
|
-
this._onStartCallback = callback;
|
360
|
-
return this;
|
361
|
-
|
362
|
-
},
|
363
|
-
|
364
|
-
onUpdate: function (callback) {
|
365
|
-
|
366
|
-
this._onUpdateCallback = callback;
|
367
|
-
return this;
|
368
|
-
|
369
|
-
},
|
370
|
-
|
371
|
-
onRepeat: function onRepeat(callback) {
|
372
|
-
|
373
|
-
this._onRepeatCallback = callback;
|
374
|
-
return this;
|
375
|
-
|
376
|
-
},
|
377
|
-
|
378
|
-
onComplete: function (callback) {
|
379
|
-
|
380
|
-
this._onCompleteCallback = callback;
|
381
|
-
return this;
|
382
|
-
|
383
|
-
},
|
384
|
-
|
385
|
-
onStop: function (callback) {
|
386
|
-
|
387
|
-
this._onStopCallback = callback;
|
388
|
-
return this;
|
389
|
-
|
390
|
-
},
|
391
|
-
|
392
|
-
update: function (time) {
|
393
|
-
|
394
|
-
var property;
|
395
|
-
var elapsed;
|
396
|
-
var value;
|
397
|
-
|
398
|
-
if (time < this._startTime) {
|
399
|
-
return true;
|
400
|
-
}
|
401
|
-
|
402
|
-
if (this._onStartCallbackFired === false) {
|
403
|
-
|
404
|
-
if (this._onStartCallback !== null) {
|
405
|
-
this._onStartCallback(this._object);
|
406
|
-
}
|
407
|
-
|
408
|
-
this._onStartCallbackFired = true;
|
409
|
-
}
|
410
|
-
|
411
|
-
elapsed = (time - this._startTime) / this._duration;
|
412
|
-
elapsed = (this._duration === 0 || elapsed > 1) ? 1 : elapsed;
|
413
|
-
|
414
|
-
value = this._easingFunction(elapsed);
|
415
|
-
|
416
|
-
for (property in this._valuesEnd) {
|
417
|
-
|
418
|
-
// Don't update properties that do not exist in the source object
|
419
|
-
if (this._valuesStart[property] === undefined) {
|
420
|
-
continue;
|
421
|
-
}
|
422
|
-
|
423
|
-
var start = this._valuesStart[property] || 0;
|
424
|
-
var end = this._valuesEnd[property];
|
425
|
-
|
426
|
-
if (end instanceof Array) {
|
427
|
-
|
428
|
-
this._object[property] = this._interpolationFunction(end, value);
|
429
|
-
|
430
|
-
} else {
|
431
|
-
|
432
|
-
// Parses relative end values with start as base (e.g.: +10, -3)
|
433
|
-
if (typeof (end) === 'string') {
|
434
|
-
|
435
|
-
if (end.charAt(0) === '+' || end.charAt(0) === '-') {
|
436
|
-
end = start + parseFloat(end);
|
437
|
-
} else {
|
438
|
-
end = parseFloat(end);
|
439
|
-
}
|
440
|
-
}
|
441
|
-
|
442
|
-
// Protect against non numeric properties.
|
443
|
-
if (typeof (end) === 'number') {
|
444
|
-
this._object[property] = start + (end - start) * value;
|
445
|
-
}
|
446
|
-
|
447
|
-
}
|
448
|
-
|
449
|
-
}
|
450
|
-
|
451
|
-
if (this._onUpdateCallback !== null) {
|
452
|
-
this._onUpdateCallback(this._object, elapsed);
|
453
|
-
}
|
454
|
-
|
455
|
-
if (elapsed === 1) {
|
456
|
-
|
457
|
-
if (this._repeat > 0) {
|
458
|
-
|
459
|
-
if (isFinite(this._repeat)) {
|
460
|
-
this._repeat--;
|
461
|
-
}
|
462
|
-
|
463
|
-
// Reassign starting values, restart by making startTime = now
|
464
|
-
for (property in this._valuesStartRepeat) {
|
465
|
-
|
466
|
-
if (typeof (this._valuesEnd[property]) === 'string') {
|
467
|
-
this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);
|
468
|
-
}
|
469
|
-
|
470
|
-
if (this._yoyo) {
|
471
|
-
var tmp = this._valuesStartRepeat[property];
|
472
|
-
|
473
|
-
this._valuesStartRepeat[property] = this._valuesEnd[property];
|
474
|
-
this._valuesEnd[property] = tmp;
|
475
|
-
}
|
476
|
-
|
477
|
-
this._valuesStart[property] = this._valuesStartRepeat[property];
|
478
|
-
|
479
|
-
}
|
480
|
-
|
481
|
-
if (this._yoyo) {
|
482
|
-
this._reversed = !this._reversed;
|
483
|
-
}
|
484
|
-
|
485
|
-
if (this._repeatDelayTime !== undefined) {
|
486
|
-
this._startTime = time + this._repeatDelayTime;
|
487
|
-
} else {
|
488
|
-
this._startTime = time + this._delayTime;
|
489
|
-
}
|
490
|
-
|
491
|
-
if (this._onRepeatCallback !== null) {
|
492
|
-
this._onRepeatCallback(this._object);
|
493
|
-
}
|
494
|
-
|
495
|
-
return true;
|
496
|
-
|
497
|
-
} else {
|
498
|
-
|
499
|
-
if (this._onCompleteCallback !== null) {
|
500
|
-
|
501
|
-
this._onCompleteCallback(this._object);
|
502
|
-
}
|
503
|
-
|
504
|
-
for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {
|
505
|
-
// Make the chained tweens start exactly at the time they should,
|
506
|
-
// even if the `update()` method was called way past the duration of the tween
|
507
|
-
this._chainedTweens[i].start(this._startTime + this._duration);
|
508
|
-
}
|
509
|
-
|
510
|
-
return false;
|
511
|
-
|
512
|
-
}
|
513
|
-
|
514
|
-
}
|
515
|
-
|
516
|
-
return true;
|
517
|
-
|
518
|
-
}
|
519
|
-
};
|
520
|
-
|
521
|
-
|
522
|
-
TWEEN.Easing = {
|
523
|
-
|
524
|
-
Linear: {
|
525
|
-
|
526
|
-
None: function (k) {
|
527
|
-
|
528
|
-
return k;
|
529
|
-
|
530
|
-
}
|
531
|
-
|
532
|
-
},
|
533
|
-
|
534
|
-
Quadratic: {
|
535
|
-
|
536
|
-
In: function (k) {
|
537
|
-
|
538
|
-
return k * k;
|
539
|
-
|
540
|
-
},
|
541
|
-
|
542
|
-
Out: function (k) {
|
543
|
-
|
544
|
-
return k * (2 - k);
|
545
|
-
|
546
|
-
},
|
547
|
-
|
548
|
-
InOut: function (k) {
|
549
|
-
|
550
|
-
if ((k *= 2) < 1) {
|
551
|
-
return 0.5 * k * k;
|
552
|
-
}
|
553
|
-
|
554
|
-
return - 0.5 * (--k * (k - 2) - 1);
|
555
|
-
|
556
|
-
}
|
557
|
-
|
558
|
-
},
|
559
|
-
|
560
|
-
Cubic: {
|
561
|
-
|
562
|
-
In: function (k) {
|
563
|
-
|
564
|
-
return k * k * k;
|
565
|
-
|
566
|
-
},
|
567
|
-
|
568
|
-
Out: function (k) {
|
569
|
-
|
570
|
-
return --k * k * k + 1;
|
571
|
-
|
572
|
-
},
|
573
|
-
|
574
|
-
InOut: function (k) {
|
575
|
-
|
576
|
-
if ((k *= 2) < 1) {
|
577
|
-
return 0.5 * k * k * k;
|
578
|
-
}
|
579
|
-
|
580
|
-
return 0.5 * ((k -= 2) * k * k + 2);
|
581
|
-
|
582
|
-
}
|
583
|
-
|
584
|
-
},
|
585
|
-
|
586
|
-
Quartic: {
|
587
|
-
|
588
|
-
In: function (k) {
|
589
|
-
|
590
|
-
return k * k * k * k;
|
591
|
-
|
592
|
-
},
|
593
|
-
|
594
|
-
Out: function (k) {
|
595
|
-
|
596
|
-
return 1 - (--k * k * k * k);
|
597
|
-
|
598
|
-
},
|
599
|
-
|
600
|
-
InOut: function (k) {
|
601
|
-
|
602
|
-
if ((k *= 2) < 1) {
|
603
|
-
return 0.5 * k * k * k * k;
|
604
|
-
}
|
605
|
-
|
606
|
-
return - 0.5 * ((k -= 2) * k * k * k - 2);
|
607
|
-
|
608
|
-
}
|
609
|
-
|
610
|
-
},
|
611
|
-
|
612
|
-
Quintic: {
|
613
|
-
|
614
|
-
In: function (k) {
|
615
|
-
|
616
|
-
return k * k * k * k * k;
|
617
|
-
|
618
|
-
},
|
619
|
-
|
620
|
-
Out: function (k) {
|
621
|
-
|
622
|
-
return --k * k * k * k * k + 1;
|
623
|
-
|
624
|
-
},
|
625
|
-
|
626
|
-
InOut: function (k) {
|
627
|
-
|
628
|
-
if ((k *= 2) < 1) {
|
629
|
-
return 0.5 * k * k * k * k * k;
|
630
|
-
}
|
631
|
-
|
632
|
-
return 0.5 * ((k -= 2) * k * k * k * k + 2);
|
633
|
-
|
634
|
-
}
|
635
|
-
|
636
|
-
},
|
637
|
-
|
638
|
-
Sinusoidal: {
|
639
|
-
|
640
|
-
In: function (k) {
|
641
|
-
|
642
|
-
return 1 - Math.cos(k * Math.PI / 2);
|
643
|
-
|
644
|
-
},
|
645
|
-
|
646
|
-
Out: function (k) {
|
647
|
-
|
648
|
-
return Math.sin(k * Math.PI / 2);
|
649
|
-
|
650
|
-
},
|
651
|
-
|
652
|
-
InOut: function (k) {
|
653
|
-
|
654
|
-
return 0.5 * (1 - Math.cos(Math.PI * k));
|
655
|
-
|
656
|
-
}
|
657
|
-
|
658
|
-
},
|
659
|
-
|
660
|
-
Exponential: {
|
661
|
-
|
662
|
-
In: function (k) {
|
663
|
-
|
664
|
-
return k === 0 ? 0 : Math.pow(1024, k - 1);
|
665
|
-
|
666
|
-
},
|
667
|
-
|
668
|
-
Out: function (k) {
|
669
|
-
|
670
|
-
return k === 1 ? 1 : 1 - Math.pow(2, - 10 * k);
|
671
|
-
|
672
|
-
},
|
673
|
-
|
674
|
-
InOut: function (k) {
|
675
|
-
|
676
|
-
if (k === 0) {
|
677
|
-
return 0;
|
678
|
-
}
|
679
|
-
|
680
|
-
if (k === 1) {
|
681
|
-
return 1;
|
682
|
-
}
|
683
|
-
|
684
|
-
if ((k *= 2) < 1) {
|
685
|
-
return 0.5 * Math.pow(1024, k - 1);
|
686
|
-
}
|
687
|
-
|
688
|
-
return 0.5 * (- Math.pow(2, - 10 * (k - 1)) + 2);
|
689
|
-
|
690
|
-
}
|
691
|
-
|
692
|
-
},
|
693
|
-
|
694
|
-
Circular: {
|
695
|
-
|
696
|
-
In: function (k) {
|
697
|
-
|
698
|
-
return 1 - Math.sqrt(1 - k * k);
|
699
|
-
|
700
|
-
},
|
701
|
-
|
702
|
-
Out: function (k) {
|
703
|
-
|
704
|
-
return Math.sqrt(1 - (--k * k));
|
705
|
-
|
706
|
-
},
|
707
|
-
|
708
|
-
InOut: function (k) {
|
709
|
-
|
710
|
-
if ((k *= 2) < 1) {
|
711
|
-
return - 0.5 * (Math.sqrt(1 - k * k) - 1);
|
712
|
-
}
|
713
|
-
|
714
|
-
return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);
|
715
|
-
|
716
|
-
}
|
717
|
-
|
718
|
-
},
|
719
|
-
|
720
|
-
Elastic: {
|
721
|
-
|
722
|
-
In: function (k) {
|
723
|
-
|
724
|
-
if (k === 0) {
|
725
|
-
return 0;
|
726
|
-
}
|
727
|
-
|
728
|
-
if (k === 1) {
|
729
|
-
return 1;
|
730
|
-
}
|
731
|
-
|
732
|
-
return -Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);
|
733
|
-
|
734
|
-
},
|
735
|
-
|
736
|
-
Out: function (k) {
|
737
|
-
|
738
|
-
if (k === 0) {
|
739
|
-
return 0;
|
740
|
-
}
|
741
|
-
|
742
|
-
if (k === 1) {
|
743
|
-
return 1;
|
744
|
-
}
|
745
|
-
|
746
|
-
return Math.pow(2, -10 * k) * Math.sin((k - 0.1) * 5 * Math.PI) + 1;
|
747
|
-
|
748
|
-
},
|
749
|
-
|
750
|
-
InOut: function (k) {
|
751
|
-
|
752
|
-
if (k === 0) {
|
753
|
-
return 0;
|
754
|
-
}
|
755
|
-
|
756
|
-
if (k === 1) {
|
757
|
-
return 1;
|
758
|
-
}
|
759
|
-
|
760
|
-
k *= 2;
|
761
|
-
|
762
|
-
if (k < 1) {
|
763
|
-
return -0.5 * Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);
|
764
|
-
}
|
765
|
-
|
766
|
-
return 0.5 * Math.pow(2, -10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI) + 1;
|
767
|
-
|
768
|
-
}
|
769
|
-
|
770
|
-
},
|
771
|
-
|
772
|
-
Back: {
|
773
|
-
|
774
|
-
In: function (k) {
|
775
|
-
|
776
|
-
var s = 1.70158;
|
777
|
-
|
778
|
-
return k * k * ((s + 1) * k - s);
|
779
|
-
|
780
|
-
},
|
781
|
-
|
782
|
-
Out: function (k) {
|
783
|
-
|
784
|
-
var s = 1.70158;
|
785
|
-
|
786
|
-
return --k * k * ((s + 1) * k + s) + 1;
|
787
|
-
|
788
|
-
},
|
789
|
-
|
790
|
-
InOut: function (k) {
|
791
|
-
|
792
|
-
var s = 1.70158 * 1.525;
|
793
|
-
|
794
|
-
if ((k *= 2) < 1) {
|
795
|
-
return 0.5 * (k * k * ((s + 1) * k - s));
|
796
|
-
}
|
797
|
-
|
798
|
-
return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);
|
799
|
-
|
800
|
-
}
|
801
|
-
|
802
|
-
},
|
803
|
-
|
804
|
-
Bounce: {
|
805
|
-
|
806
|
-
In: function (k) {
|
807
|
-
|
808
|
-
return 1 - TWEEN.Easing.Bounce.Out(1 - k);
|
809
|
-
|
810
|
-
},
|
811
|
-
|
812
|
-
Out: function (k) {
|
813
|
-
|
814
|
-
if (k < (1 / 2.75)) {
|
815
|
-
return 7.5625 * k * k;
|
816
|
-
} else if (k < (2 / 2.75)) {
|
817
|
-
return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;
|
818
|
-
} else if (k < (2.5 / 2.75)) {
|
819
|
-
return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;
|
820
|
-
} else {
|
821
|
-
return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;
|
822
|
-
}
|
823
|
-
|
824
|
-
},
|
825
|
-
|
826
|
-
InOut: function (k) {
|
827
|
-
|
828
|
-
if (k < 0.5) {
|
829
|
-
return TWEEN.Easing.Bounce.In(k * 2) * 0.5;
|
830
|
-
}
|
831
|
-
|
832
|
-
return TWEEN.Easing.Bounce.Out(k * 2 - 1) * 0.5 + 0.5;
|
833
|
-
|
834
|
-
}
|
835
|
-
|
836
|
-
}
|
837
|
-
|
838
|
-
};
|
839
|
-
|
840
|
-
TWEEN.Interpolation = {
|
841
|
-
|
842
|
-
Linear: function (v, k) {
|
843
|
-
|
844
|
-
var m = v.length - 1;
|
845
|
-
var f = m * k;
|
846
|
-
var i = Math.floor(f);
|
847
|
-
var fn = TWEEN.Interpolation.Utils.Linear;
|
848
|
-
|
849
|
-
if (k < 0) {
|
850
|
-
return fn(v[0], v[1], f);
|
851
|
-
}
|
852
|
-
|
853
|
-
if (k > 1) {
|
854
|
-
return fn(v[m], v[m - 1], m - f);
|
855
|
-
}
|
856
|
-
|
857
|
-
return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);
|
858
|
-
|
859
|
-
},
|
860
|
-
|
861
|
-
Bezier: function (v, k) {
|
862
|
-
|
863
|
-
var b = 0;
|
864
|
-
var n = v.length - 1;
|
865
|
-
var pw = Math.pow;
|
866
|
-
var bn = TWEEN.Interpolation.Utils.Bernstein;
|
867
|
-
|
868
|
-
for (var i = 0; i <= n; i++) {
|
869
|
-
b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);
|
870
|
-
}
|
871
|
-
|
872
|
-
return b;
|
873
|
-
|
874
|
-
},
|
875
|
-
|
876
|
-
CatmullRom: function (v, k) {
|
877
|
-
|
878
|
-
var m = v.length - 1;
|
879
|
-
var f = m * k;
|
880
|
-
var i = Math.floor(f);
|
881
|
-
var fn = TWEEN.Interpolation.Utils.CatmullRom;
|
882
|
-
|
883
|
-
if (v[0] === v[m]) {
|
884
|
-
|
885
|
-
if (k < 0) {
|
886
|
-
i = Math.floor(f = m * (1 + k));
|
887
|
-
}
|
888
|
-
|
889
|
-
return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);
|
890
|
-
|
891
|
-
} else {
|
892
|
-
|
893
|
-
if (k < 0) {
|
894
|
-
return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);
|
895
|
-
}
|
896
|
-
|
897
|
-
if (k > 1) {
|
898
|
-
return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);
|
899
|
-
}
|
900
|
-
|
901
|
-
return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);
|
902
|
-
|
903
|
-
}
|
904
|
-
|
905
|
-
},
|
906
|
-
|
907
|
-
Utils: {
|
908
|
-
|
909
|
-
Linear: function (p0, p1, t) {
|
910
|
-
|
911
|
-
return (p1 - p0) * t + p0;
|
912
|
-
|
913
|
-
},
|
914
|
-
|
915
|
-
Bernstein: function (n, i) {
|
916
|
-
|
917
|
-
var fc = TWEEN.Interpolation.Utils.Factorial;
|
918
|
-
|
919
|
-
return fc(n) / fc(i) / fc(n - i);
|
920
|
-
|
921
|
-
},
|
922
|
-
|
923
|
-
Factorial: (function () {
|
924
|
-
|
925
|
-
var a = [1];
|
926
|
-
|
927
|
-
return function (n) {
|
928
|
-
|
929
|
-
var s = 1;
|
930
|
-
|
931
|
-
if (a[n]) {
|
932
|
-
return a[n];
|
933
|
-
}
|
934
|
-
|
935
|
-
for (var i = n; i > 1; i--) {
|
936
|
-
s *= i;
|
937
|
-
}
|
938
|
-
|
939
|
-
a[n] = s;
|
940
|
-
return s;
|
941
|
-
|
942
|
-
};
|
943
|
-
|
944
|
-
})(),
|
945
|
-
|
946
|
-
CatmullRom: function (p0, p1, p2, p3, t) {
|
947
|
-
|
948
|
-
var v0 = (p2 - p0) * 0.5;
|
949
|
-
var v1 = (p3 - p1) * 0.5;
|
950
|
-
var t2 = t * t;
|
951
|
-
var t3 = t * t2;
|
952
|
-
|
953
|
-
return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;
|
954
|
-
|
955
|
-
}
|
956
|
-
|
957
|
-
}
|
958
|
-
|
959
|
-
};
|
960
|
-
|
961
|
-
export default TWEEN;
|