Skip to main content
Participant
March 1, 2024
Answered

Pausing and resuming a composition

  • March 1, 2024
  • 1 reply
  • 897 views

I've got a client that has many requested changes from time to time.

 

They have a schematic that plays out; filling up lines with color, valves opening, etc. During the animation he wants to highlight parts to talk about to students. The problem is if he comes back at a future time and wants to add some new information or parts, I have to move all the key frames and adjust any other parts that come later.

 

Besides rendering it out once and using Freeze Frames to stop and restart the animation, creating stacks of layers OR using Toggle Hold Keyframe on whichever property is currently moving. Is there anyway to Pause and Resume a composition in After Effects?

 

I've tried Time Remapping but the overall composition just speeds up and we need it to remain at a consistant speed.

 

Like and expression that holds a composition still and resumes it when we change the value? Or automatically extends the composition's duration by the amount we paused for?

This topic has been closed for replies.
Correct answer Dan Ebberts

This time remapping expession should let you start and stop playback with a checkbox control on a control layer (named "Control"):

p = thisComp.layer("Control").effect("Checkbox Control")("Checkbox");
t = p.value ? time : 0;
if (p.numKeys > 0){
  n = p.nearestKey(time).index;
  if (p.key(n).time > time) n--;
  if (n > 0){
    t = p.key(1).value ? p.key(1).time : 0;
    t += p.value ? time - p.key(n).time : 0;
    for (i = 2; i <= n; i++){
      t += p.key(i-1).value ? p.key(i).time - p.key(i-1).time : 0;
    }
  }
}
t

1 reply

Dan Ebberts
Community Expert
Dan EbbertsCommunity ExpertCorrect answer
Community Expert
March 2, 2024

This time remapping expession should let you start and stop playback with a checkbox control on a control layer (named "Control"):

p = thisComp.layer("Control").effect("Checkbox Control")("Checkbox");
t = p.value ? time : 0;
if (p.numKeys > 0){
  n = p.nearestKey(time).index;
  if (p.key(n).time > time) n--;
  if (n > 0){
    t = p.key(1).value ? p.key(1).time : 0;
    t += p.value ? time - p.key(n).time : 0;
    for (i = 2; i <= n; i++){
      t += p.key(i-1).value ? p.key(i).time - p.key(i-1).time : 0;
    }
  }
}
t
SaiyanJABAuthor
Participant
March 2, 2024

Thanks so much Dan! This solved my problem perfectly. 🙂