Skip to content

Commit 3fb432e

Browse files
committed
Added Tween.pause and Tween.resume.
1 parent 0470a5e commit 3fb432e

5 files changed

Lines changed: 68 additions & 11 deletions

File tree

v3/src/checksum.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
var CHECKSUM = {
2-
build: '85dc7c80-4153-11e7-a2b9-47fa36f39632'
2+
build: '688ab350-4157-11e7-98ba-cfca60c8a386'
33
};
44
module.exports = CHECKSUM;

v3/src/tween/Tween.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ var Tween = function (manager, data)
3535
// The current state of the tween
3636
this.state = TWEEN_CONST.PENDING_ADD;
3737

38+
// The state of the tween when it was paused (used by Resume)
39+
this._pausedState = TWEEN_CONST.PENDING_ADD;
40+
3841
// Does the Tween start off paused? (if so it needs to be started with Tween.play)
3942
this.paused = false;
4043

@@ -71,12 +74,14 @@ Tween.prototype.constructor = Tween;
7174

7275
Tween.prototype = {
7376

74-
init: require('./components/Init'),
7577
calcDuration: require('./components/CalcDuration'),
78+
init: require('./components/Init'),
7679
loadValues: require('./components/LoadValues'),
7780
nextState: require('./components/NextState'),
81+
pause: require('./components/Pause'),
7882
play: require('./components/Play'),
7983
resetTweenData: require('./components/ResetTweenData'),
84+
resume: require('./components/Resume'),
8085
seek: require('./components/Seek'),
8186
setEventCallback: require('./components/SetEventCallback'),
8287
update: require('./components/Update')

v3/src/tween/components/Pause.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
var TWEEN_CONST = require('../const');
2+
3+
var Pause = function ()
4+
{
5+
if (this.state === TWEEN_CONST.PAUSED)
6+
{
7+
return;
8+
}
9+
10+
this.paused = true;
11+
12+
this._pausedState = this.state;
13+
14+
this.state = TWEEN_CONST.PAUSED;
15+
16+
return this;
17+
};
18+
19+
module.exports = Pause;

v3/src/tween/components/Resume.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var TWEEN_CONST = require('../const');
2+
3+
var Pause = function ()
4+
{
5+
if (this.state === TWEEN_CONST.PAUSED)
6+
{
7+
this.paused = false;
8+
9+
this.state = this._pausedState;
10+
}
11+
12+
return this;
13+
};
14+
15+
module.exports = Pause;

v3/src/tween/components/Seek.js

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,46 @@
11
// var TWEEN_CONST = require('../const');
22

33
// For now progress = 0 to 1
4-
var Seek = function (progress)
4+
var Seek = function (toPosition)
55
{
6-
var marker = this.totalDuration * progress;
7-
86
var data = this.data;
97

10-
// Now works on multi-property tweens with varying durations, but doesn't yet factor in delays
118
for (var i = 0; i < this.totalData; i++)
129
{
10+
// This won't work with loop > 0 yet
11+
var ms = this.totalDuration * toPosition;
12+
1313
var tweenData = data[i];
14+
var progress;
15+
var elapsed;
1416

15-
if (marker >= tweenData.duration)
17+
if (ms <= tweenData.delay)
18+
{
19+
progress = 0;
20+
elapsed = 0;
21+
}
22+
else if (ms >= tweenData.totalDuration)
1623
{
17-
tweenData.progress = 1;
18-
tweenData.elapsed = tweenData.duration;
24+
progress = 1;
25+
elapsed = tweenData.duration;
26+
}
27+
else if (ms > tweenData.delay && ms <= tweenData.t1)
28+
{
29+
// Keep it zero bound
30+
ms = Math.max(0, ms - tweenData.delay);
31+
32+
// Somewhere in the first playthru range
33+
progress = ms / tweenData.t1;
34+
elapsed = tweenData.duration * progress;
1935
}
2036
else
2137
{
22-
tweenData.progress = marker / tweenData.duration;
23-
tweenData.elapsed = marker;
38+
// Somewhere in repeat land
2439
}
2540

41+
tweenData.progress = progress;
42+
tweenData.elapsed = elapsed;
43+
2644
var v = tweenData.ease(tweenData.progress);
2745

2846
tweenData.current = tweenData.start + ((tweenData.end - tweenData.start) * v);

0 commit comments

Comments
 (0)