Would be great if there was a TIMELINE_COMPLETE event. But there isn't! So the next best thing is the undocumented addFrameScript method.
You can use addFrameScript() to add code to the last frame of your MovieClips (or any other frame). This code could remove the old MovieClip (the one that has just finished), and add the new MovieClip (the next one in the queue).
public function Main()
{
// Remember addFrameScript() is zero based.
currentVidMc.addFrameScript(currentVidMc.totalFrames - 1, frameFunction);
}
private function frameFunction():void
{
//delete frame script by passing null as second parameter
currentVidMc.addFrameScript(currentVidMc.totalFrames - 1, null);
removeChild(currentVidMc);
addChild(newVidMc);
newVidMc.gotoAndPlay(1);
}
EDIT*
To make a smooth transition, you could try loading in the new clip early (about 15 frames sounds good to me, but you will have to try) with visible set to false, and stopped. Then when the last frame of the current clip rolls around, just remove the current clip, and set the new clips visible property to true, and play it. Most of the jump comes from the loading of the clip to the stage, so pre-rendering the clip may help.