diff options
-rw-r--r-- | js/panels/Timeline/Layer.reel/Layer.js | 20 | ||||
-rw-r--r-- | js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js | 86 | ||||
-rw-r--r-- | js/panels/Timeline/Tween.reel/Tween.js | 5 |
3 files changed, 66 insertions, 45 deletions
diff --git a/js/panels/Timeline/Layer.reel/Layer.js b/js/panels/Timeline/Layer.reel/Layer.js index b41680be..5206ae16 100644 --- a/js/panels/Timeline/Layer.reel/Layer.js +++ b/js/panels/Timeline/Layer.reel/Layer.js | |||
@@ -255,12 +255,12 @@ var Layer = exports.Layer = Montage.create(Component, { | |||
255 | if (value !== this._isSelected) { | 255 | if (value !== this._isSelected) { |
256 | // Only concerned about different values | 256 | // Only concerned about different values |
257 | if (value === false) { | 257 | if (value === false) { |
258 | // If changing from false to true, we need to deselect any associated styles | 258 | // If changing from true to false, we need to deselect any associated styles |
259 | this.selectStyle(false); | 259 | this.selectStyle(false); |
260 | } | 260 | } |
261 | this._isSelected = value; | 261 | this._isSelected = value; |
262 | this.layerData.isSelected = value; | 262 | this.layerData.isSelected = value; |
263 | //this.needsDraw = true; | 263 | this.needsDraw = true; |
264 | } | 264 | } |
265 | 265 | ||
266 | } | 266 | } |
@@ -381,7 +381,6 @@ var Layer = exports.Layer = Montage.create(Component, { | |||
381 | return this._bypassAnimation; | 381 | return this._bypassAnimation; |
382 | }, | 382 | }, |
383 | set: function(newVal) { | 383 | set: function(newVal) { |
384 | //console.log("layer.js _bypassAnimation setter " + newVal) | ||
385 | this._bypassAnimation = newVal; | 384 | this._bypassAnimation = newVal; |
386 | } | 385 | } |
387 | }, | 386 | }, |
@@ -406,7 +405,6 @@ var Layer = exports.Layer = Montage.create(Component, { | |||
406 | 405 | ||
407 | setData:{ | 406 | setData:{ |
408 | value:function(){ | 407 | value:function(){ |
409 | this.log('layer: setData called') | ||
410 | this.layerName = this.layerData.layerName; | 408 | this.layerName = this.layerData.layerName; |
411 | this.layerID = this.layerData.layerID; | 409 | this.layerID = this.layerData.layerID; |
412 | this.arrLayerStyles = this.layerData.arrLayerStyles; | 410 | this.arrLayerStyles = this.layerData.arrLayerStyles; |
@@ -424,9 +422,13 @@ var Layer = exports.Layer = Montage.create(Component, { | |||
424 | this.dtextScaleX = this.layerData.dtextScaleX; | 422 | this.dtextScaleX = this.layerData.dtextScaleX; |
425 | this.dtextScaleY = this.layerData.dtextScaleY; | 423 | this.dtextScaleY = this.layerData.dtextScaleY; |
426 | this.dtextRotate = this.layerData.dtextRotate; | 424 | this.dtextRotate = this.layerData.dtextRotate; |
425 | this._isFirstDraw = this.layerData._isFirstDraw; | ||
427 | this.needsDraw = true; | 426 | this.needsDraw = true; |
428 | } | 427 | } |
429 | }, | 428 | }, |
429 | _isFirstDraw : { | ||
430 | value: true | ||
431 | }, | ||
430 | 432 | ||
431 | /* END: Models */ | 433 | /* END: Models */ |
432 | 434 | ||
@@ -483,6 +485,16 @@ var Layer = exports.Layer = Montage.create(Component, { | |||
483 | } | 485 | } |
484 | } | 486 | } |
485 | }, | 487 | }, |
488 | didDraw: { | ||
489 | value: function() { | ||
490 | if ((this.isSelected === true) && (this._isFirstDraw === true)) { | ||
491 | // Once we're done drawing the first time we need to tell the TimelinePanel if | ||
492 | // this layer is supposed to be selected. | ||
493 | this.parentComponent.parentComponent.selectedLayerID = this.layerID; | ||
494 | this._isFirstDraw = false; | ||
495 | } | ||
496 | } | ||
497 | }, | ||
486 | /* End: Draw cycle */ | 498 | /* End: Draw cycle */ |
487 | 499 | ||
488 | /* Begin: Controllers */ | 500 | /* Begin: Controllers */ |
diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js index 1afb9e5a..a1e320c4 100644 --- a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js +++ b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js | |||
@@ -139,6 +139,28 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
139 | } | 139 | } |
140 | }, | 140 | }, |
141 | 141 | ||
142 | _selectedLayerID:{ | ||
143 | value: false | ||
144 | }, | ||
145 | selectedLayerID : { | ||
146 | get: function() { | ||
147 | return this._selectedLayerID; | ||
148 | }, | ||
149 | set: function(newVal) { | ||
150 | if (newVal === false) { | ||
151 | // We are clearing the timeline, so just set the value and return. | ||
152 | this._selectedLayerID = newVal; | ||
153 | return; | ||
154 | } | ||
155 | if (newVal !== this._selectedLayerID) { | ||
156 | var selectIndex = this.getLayerIndexByID(newVal); | ||
157 | this._selectedLayerID = newVal; | ||
158 | this._captureSelection = true; | ||
159 | this.selectLayer(selectIndex, true); | ||
160 | } | ||
161 | } | ||
162 | }, | ||
163 | |||
142 | millisecondsOffset:{ | 164 | millisecondsOffset:{ |
143 | value:1000 | 165 | value:1000 |
144 | }, | 166 | }, |
@@ -374,14 +396,11 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
374 | 396 | ||
375 | // Feed the new array of objects into the repetitions | 397 | // Feed the new array of objects into the repetitions |
376 | // and select the first layer. | 398 | // and select the first layer. |
399 | this.temparrLayers[0].layerData.isSelected = true; | ||
400 | this.temparrLayers[0].layerData._isFirstDraw = true; | ||
401 | |||
377 | this.arrLayers=this.temparrLayers; | 402 | this.arrLayers=this.temparrLayers; |
378 | 403 | ||
379 | // TODO: We need a better solution to this race condition than a timeout. | ||
380 | this._captureSelection = true; | ||
381 | var that = this; | ||
382 | setTimeout(function() { | ||
383 | that.selectLayer(0, true); | ||
384 | }, 1000) | ||
385 | } else { | 404 | } else { |
386 | // New document. Create default layer. | 405 | // New document. Create default layer. |
387 | this.createNewLayer(1); | 406 | this.createNewLayer(1); |
@@ -397,31 +416,21 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
397 | } else { | 416 | } else { |
398 | // we do have information stored. Use it. | 417 | // we do have information stored. Use it. |
399 | this._boolCacheArrays = false; | 418 | this._boolCacheArrays = false; |
419 | //var myIndex = 0; | ||
420 | for (var i = 0; i < this.application.ninja.currentDocument.tlArrLayers.length; i++) { | ||
421 | if ( this.application.ninja.currentDocument.tlArrLayers[i].layerData.isSelected === true ) { | ||
422 | this.application.ninja.currentDocument.tlArrLayers[i].layerData._isFirstDraw = true; | ||
423 | } | ||
424 | } | ||
425 | |||
426 | |||
400 | this.arrLayers = this.application.ninja.currentDocument.tlArrLayers; | 427 | this.arrLayers = this.application.ninja.currentDocument.tlArrLayers; |
401 | this.currentLayerNumber = this.application.ninja.currentDocument.tllayerNumber; | 428 | this.currentLayerNumber = this.application.ninja.currentDocument.tllayerNumber; |
402 | this.currentLayerSelected = this.application.ninja.currentDocument.tlCurrentLayerSelected; | 429 | this.currentLayerSelected = this.application.ninja.currentDocument.tlCurrentLayerSelected; |
403 | this.hashInstance = this.application.ninja.currentDocument.tlLayerHashTable; | 430 | this.hashInstance = this.application.ninja.currentDocument.tlLayerHashTable; |
404 | this.hashElementMapToLayer = this.application.ninja.currentDocument.tlElementHashTable; | 431 | this.hashElementMapToLayer = this.application.ninja.currentDocument.tlElementHashTable; |
405 | this.hashKey = this.application.ninja.currentDocument.hashKey; | 432 | this.hashKey = this.application.ninja.currentDocument.hashKey; |
406 | this._boolCacheArrays = true; | ||
407 | |||
408 | // Search through the arrLayers and select the layer that's already selected | ||
409 | var i = 0, | ||
410 | selectMe = 0, | ||
411 | arrLayersLength = this.arrLayers.length; | ||
412 | for (i = 0; i < arrLayersLength; i++) { | ||
413 | if (this.arrLayers[i].isSelected === true) { | ||
414 | selectMe = i; | ||
415 | } | ||
416 | } | ||
417 | |||
418 | 433 | ||
419 | this._captureSelection = true; | ||
420 | // TODO: Better solution than a timer. | ||
421 | var that = this; | ||
422 | setTimeout(function() { | ||
423 | that.selectLayer(selectMe, true); | ||
424 | }, 300) | ||
425 | } | 434 | } |
426 | } | 435 | } |
427 | }, | 436 | }, |
@@ -454,6 +463,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
454 | this._firstTimeLoaded=true; | 463 | this._firstTimeLoaded=true; |
455 | this.end_hottext.value = 25; | 464 | this.end_hottext.value = 25; |
456 | this.updateTrackContainerWidth(); | 465 | this.updateTrackContainerWidth(); |
466 | this.selectedLayerID = false; | ||
457 | 467 | ||
458 | // Clear the repetitions | 468 | // Clear the repetitions |
459 | if (this.arrLayers.length > 0) { | 469 | if (this.arrLayers.length > 0) { |
@@ -464,9 +474,12 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
464 | 474 | ||
465 | handleDocumentChange:{ | 475 | handleDocumentChange:{ |
466 | value:function(event){ | 476 | value:function(event){ |
477 | // Clear the timeline but not the cache | ||
467 | this._boolCacheArrays = false; | 478 | this._boolCacheArrays = false; |
468 | this.clearTimelinePanel(); | 479 | this.clearTimelinePanel(); |
469 | this._boolCacheArrays = true; | 480 | this._boolCacheArrays = true; |
481 | |||
482 | // Rebind the document events for the new document context | ||
470 | this._bindDocumentEvents(); | 483 | this._bindDocumentEvents(); |
471 | 484 | ||
472 | this.hashInstance = this.createLayerHashTable(); | 485 | this.hashInstance = this.createLayerHashTable(); |
@@ -673,6 +686,13 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
673 | thingToPush.layerData.layerID = this.currentLayerNumber; | 686 | thingToPush.layerData.layerID = this.currentLayerNumber; |
674 | thingToPush.parentElementUUID = this.hashKey; |