Skip to content

Commit 0e80b51

Browse files
committed
various timing fixes for drawSequential: false
1 parent c3b1574 commit 0e80b51

File tree

2 files changed

+51
-43
lines changed

2 files changed

+51
-43
lines changed

jquery.lazylinepainter-1.7.0.js

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* https://github.com/camoconnell/lazy-line-painter
66
* http://www.camoconnell.com
77
*
8-
* Copyright © 2013-2015 Cam O'Connell
8+
* Copyright 2013-2015 Cam O'Connell
99
* All rights reserved.
1010
*
1111
* Licensed under the GNU license.
@@ -73,13 +73,13 @@
7373
if (!data) {
7474

7575
var options = _getOptions($this, userOpts);
76-
var delay = options.delay * options.speedMultiplier;
77-
var totalDuration = _getTotalDuration(delay, options.paths, options.speedMultiplier);
76+
var totalDuration = options.delay + _getTotalDuration(options.paths);
77+
var longestDuration = options.delay + _getLongestDuration(options.paths);
7878

79-
_setupPaths(options, delay, totalDuration);
79+
options.totalDuration = options.drawSequential ? totalDuration : longestDuration;
80+
_setupPaths(options);
8081

81-
options.totalDuration = options.drawSequential ? options.playhead : options._longestDuration;
82-
options.totalDuration += delay;
82+
options.totalDuration *= options.speedMultiplier;
8383

8484
$this.append(options.svg);
8585
$this.data(dataKey, options);
@@ -296,7 +296,7 @@
296296
'paused': false,
297297
'progress': 0,
298298

299-
'_longestDuration': 0,
299+
'longestDuration': 0,
300300
'playhead': 0
301301

302302
};
@@ -317,9 +317,9 @@
317317
};
318318

319319

320-
var _setupPaths = function(options, delay, totalDuration) {
320+
var _setupPaths = function(options) {
321321

322-
var startTime = options.reverse ? totalDuration : 0;
322+
var startTime = options.reverse ? options.totalDuration : 0;
323323

324324
for (var i = 0; i < options.paths.length; i++) {
325325

@@ -330,7 +330,7 @@
330330
path.el = _getPath(options, i);
331331
path.length = _getPathLength(path.el);
332332
path.delay = path.delay || 0;
333-
path.duration = path.duration * options.speedMultiplier;
333+
path.duration = path.duration;
334334
path.positions = _getPathPoints(path.el, path.length);
335335
path.ease = path.ease || null;
336336

@@ -345,29 +345,25 @@
345345
path.onStrokeCompleteDone = false;
346346
path.onStrokeUpdate = path.onStrokeUpdate || null;
347347

348-
if (path.duration > options._longestDuration) {
349-
options._longestDuration = path.duration;
350-
}
351-
352348
var startProgress;
353-
var durationProgress = path.duration / totalDuration;
349+
var durationProgress = path.duration / options.totalDuration;
350+
354351
if (options.reverse) {
355352
startTime -= path.duration;
356-
startProgress = startTime / totalDuration;
353+
startProgress = startTime / options.totalDuration;
357354
} else {
358355
if (options.drawSequential) {
359-
startTime = (options.playhead + delay)
356+
startTime = options.playhead + options.delay;
360357
} else {
361-
startTime = (path.delay + delay);
362-
console.log(startTime);
358+
startTime = path.delay + options.delay;
363359
}
364-
startProgress = startTime / totalDuration;
360+
startProgress = startTime / options.totalDuration;
365361
}
366362

367363
path.startTime = startTime;
368364
path.startProgress = startProgress;
369365
path.durationProgress = durationProgress;
370-
options.playhead += path.duration;
366+
options.playhead += (path.duration + path.delay);
371367
}
372368
}
373369

@@ -547,15 +543,28 @@
547543
};
548544

549545

550-
var _getTotalDuration = function(delay, paths, speedMultiplier) {
551-
var totalDuration = delay;
546+
var _getTotalDuration = function(paths) {
547+
var totalDuration = 0;
552548
for (var i = 0; i < paths.length; i++) {
553-
totalDuration += (paths[i].duration * speedMultiplier);
549+
var pathDelay = paths[i].delay || 0;
550+
totalDuration += (paths[i].duration + pathDelay);
554551
}
555552
return totalDuration;
556553
};
557554

558555

556+
var _getLongestDuration = function(paths) {
557+
var longestDuration = 0;
558+
for (var i = 0; i < paths.length; i++) {
559+
var pathDelay = paths[i].delay || 0;
560+
if ((paths[i].duration + pathDelay) > longestDuration) {
561+
longestDuration = (paths[i].duration + pathDelay);
562+
}
563+
}
564+
return longestDuration;
565+
};
566+
567+
559568
/**
560569
* _getPath
561570
* Responsible for creating a svg path element, and setting attributes on path.

0 commit comments

Comments
 (0)