|
5 | 5 | * https://github.com/camoconnell/lazy-line-painter
|
6 | 6 | * http://www.camoconnell.com
|
7 | 7 | *
|
8 |
| - * Copyright © 2013-2015 Cam O'Connell |
| 8 | + * Copyright 2013-2015 Cam O'Connell |
9 | 9 | * All rights reserved.
|
10 | 10 | *
|
11 | 11 | * Licensed under the GNU license.
|
|
73 | 73 | if (!data) {
|
74 | 74 |
|
75 | 75 | 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); |
78 | 78 |
|
79 |
| - _setupPaths(options, delay, totalDuration); |
| 79 | + options.totalDuration = options.drawSequential ? totalDuration : longestDuration; |
| 80 | + _setupPaths(options); |
80 | 81 |
|
81 |
| - options.totalDuration = options.drawSequential ? options.playhead : options._longestDuration; |
82 |
| - options.totalDuration += delay; |
| 82 | + options.totalDuration *= options.speedMultiplier; |
83 | 83 |
|
84 | 84 | $this.append(options.svg);
|
85 | 85 | $this.data(dataKey, options);
|
|
296 | 296 | 'paused': false,
|
297 | 297 | 'progress': 0,
|
298 | 298 |
|
299 |
| - '_longestDuration': 0, |
| 299 | + 'longestDuration': 0, |
300 | 300 | 'playhead': 0
|
301 | 301 |
|
302 | 302 | };
|
|
317 | 317 | };
|
318 | 318 |
|
319 | 319 |
|
320 |
| - var _setupPaths = function(options, delay, totalDuration) { |
| 320 | + var _setupPaths = function(options) { |
321 | 321 |
|
322 |
| - var startTime = options.reverse ? totalDuration : 0; |
| 322 | + var startTime = options.reverse ? options.totalDuration : 0; |
323 | 323 |
|
324 | 324 | for (var i = 0; i < options.paths.length; i++) {
|
325 | 325 |
|
|
330 | 330 | path.el = _getPath(options, i);
|
331 | 331 | path.length = _getPathLength(path.el);
|
332 | 332 | path.delay = path.delay || 0;
|
333 |
| - path.duration = path.duration * options.speedMultiplier; |
| 333 | + path.duration = path.duration; |
334 | 334 | path.positions = _getPathPoints(path.el, path.length);
|
335 | 335 | path.ease = path.ease || null;
|
336 | 336 |
|
|
345 | 345 | path.onStrokeCompleteDone = false;
|
346 | 346 | path.onStrokeUpdate = path.onStrokeUpdate || null;
|
347 | 347 |
|
348 |
| - if (path.duration > options._longestDuration) { |
349 |
| - options._longestDuration = path.duration; |
350 |
| - } |
351 |
| - |
352 | 348 | var startProgress;
|
353 |
| - var durationProgress = path.duration / totalDuration; |
| 349 | + var durationProgress = path.duration / options.totalDuration; |
| 350 | + |
354 | 351 | if (options.reverse) {
|
355 | 352 | startTime -= path.duration;
|
356 |
| - startProgress = startTime / totalDuration; |
| 353 | + startProgress = startTime / options.totalDuration; |
357 | 354 | } else {
|
358 | 355 | if (options.drawSequential) {
|
359 |
| - startTime = (options.playhead + delay) |
| 356 | + startTime = options.playhead + options.delay; |
360 | 357 | } else {
|
361 |
| - startTime = (path.delay + delay); |
362 |
| - console.log(startTime); |
| 358 | + startTime = path.delay + options.delay; |
363 | 359 | }
|
364 |
| - startProgress = startTime / totalDuration; |
| 360 | + startProgress = startTime / options.totalDuration; |
365 | 361 | }
|
366 | 362 |
|
367 | 363 | path.startTime = startTime;
|
368 | 364 | path.startProgress = startProgress;
|
369 | 365 | path.durationProgress = durationProgress;
|
370 |
| - options.playhead += path.duration; |
| 366 | + options.playhead += (path.duration + path.delay); |
371 | 367 | }
|
372 | 368 | }
|
373 | 369 |
|
|
547 | 543 | };
|
548 | 544 |
|
549 | 545 |
|
550 |
| - var _getTotalDuration = function(delay, paths, speedMultiplier) { |
551 |
| - var totalDuration = delay; |
| 546 | + var _getTotalDuration = function(paths) { |
| 547 | + var totalDuration = 0; |
552 | 548 | 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); |
554 | 551 | }
|
555 | 552 | return totalDuration;
|
556 | 553 | };
|
557 | 554 |
|
558 | 555 |
|
| 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 | + |
559 | 568 | /**
|
560 | 569 | * _getPath
|
561 | 570 | * Responsible for creating a svg path element, and setting attributes on path.
|
|
0 commit comments