Keeping cycles flexible for easy re-timing by using Service Frame and working two levels deep

Using Keyframes and Classic Tweens makes re-timing easy. Sliding the keys to the left or right results in having more or fewer in-betweens and therefore slower or faster movement.

The problem

A typical problem for timeline based applications is that the linear representation requires to temporarily have a duplicate keyframe.
For example if we would like to have an object move from point A to point B to point C and then back to A with 3 in-betweens between the keys, the cycle will look like this:
(A1)-2–3‑4-(B5)-6–7‑8-(C9)-10–11-12, where 10, 11 and 12 lead us to (A1). Then it will loop smoothly and endlessly. In order to get Flash to calculate the necessary in-betweens 10, 11 and 12 we need to have a duplicate of (A1) at the end of the Timeline. Then the standard procedure is to convert 12 to a key and delete 13 which is the duplicate frame.

It works well and the cycle is perfect.

Now it is very easy to re-time the first and second parts (A to B and B to C) of this cycle. All we need to do is slide the keys to the left or right. We can't do this in the last section however, because 12 was an in-between between C and A, calculated for this specific case. If we slide it to the right, the new in-betweens will be added before it and the spacing of those in-betweens will be even up to this pseudo key. From it the cycle will jump to A.
To make the jump at the end very obvious I slowed down the circle significantly.

With this setup the only way to fix the problem is to alt-drag A to the last frame+1, delete the useless key (previous 12) by pressing Shift+F6 and then create it again by pressing F6. Now we have to remove the duplicate of A again, because otherwise there will be a hold.
If we want to re-time the C to A section, even without changing the whole length of the cycle we need to repeat this operation.

The solution

A simple and efficient solution to this problem is to create a container which only displays the actual cycle ignoring the last duplicate frame, which can stay there as a Service Frame for easy re-timing.
Here is an example of this:

Now we can change the timing within the loop without the constant need to delete and re-generate the last frame. If we need to change the duration of the whole cycle we have to modify the Loop container to match the new duration.

Having Symbols nested like this, we can tween the loop across the stage and then re-time again inside if we need to.

This is a universal method which can be used for all kinds of cycles. 

In the very simplified walk cycle below Service Frame was used for all elements – head, torso, feet and hands.

Real world examples

Below are three more examples from a short and simple educational music video where Service Frame has been used in all kinds of cycles.

The wings of the Parrot were animated frame by frame, the crest uses shape tweening inside a motion tweened container. The rest are just standard classic (motion) tweens.

The tail and tongue of the Dog were shape tweened. The rest was motion (classic) tweened. Head is a container that holds all facial features and its animation is synced to the whole cycle. Tongue loops twice for one body cycle.

Heavy layering, 'clever' design, shape and classic tweening were used to make the Koala turn smoothly. Service Frame technique has been applied multiple times, two, three and sometimes even four levels deep. Symbol playback was synced across nested Timelines and the whole animation was timed to the beat of the song.


No comments yet.

Leave a Reply