– Make the timeline and all the event circles the child of a Null Layer.
– We will give the anchorPoint of this Null Layer this expression:
m=thisLayer.marker;
slideTime = 0.6;
if (m.numKeys>1) {
nk = m.nearestKey(time-slideTime);
nextKeyIndex = Math.min(m.numKeys, nk.index + (nk.time < time-slideTime));
prevKeyIndex = Math.max(1 , nextKeyIndex-1);
fromP = thisComp.layer(m.key(prevKeyIndex).comment).position;
toP = thisComp.layer(m.key(nextKeyIndex).comment).position;
animTime = m.key(nextKeyIndex).time;
ease(time, animTime, animTime+slideTime, fromP, toP);
} else {
value
}
The markers are supposed to go on the null layer, and have the same names as the (unique) layernames of the event circles.
By animating the anchorpoint, not the position of the null, you can still animate position and scale of the null.