El año pasado hice un trabajo donde se necesitaba que se reproducieran unas imágenes y al mismo tiempo se escuchara una voz en voz describiendo la imagen.
El tema que eran varia galerías que eran cambiadas dinámicamente por lo que se requería que ésta pseudo película se generara en tiempo de ejecución.
El tema estaba en precargar todas las imágenes y todas los sonidos para que no haya pausas entre imagen e imagen.
Precargar la imágenes es relativamente facil ya que podes cargarlas usando un loadClip ya que son guardadas automáticamente en el caché.
El tema son los sonidos, como asegurarse que los sonidos son precargados de forma que no haya pausas. Hay un par de formas de hacerlo la que me resultó más práctica a mi fue:

La forma normal sería, manual y estática sería:

import flash.media.Sound;
import flash.media.SoundChannel;
 
var mySoundOne:Sound = new SoundOne();
var mySoundTwo:Sound = new SoundTwo();
var mySoundThree:Sound = new SoundThree();
 
var mySoundChannel:SoundChannel = mySoundOne.play();
mySoundChannel.addEventListener(Event.SOUND_COMPLETE, sound_1_Complete);
 
var mySoundChannel2:SoundChannel;
var mySoundChannel3:SoundChannel;
 
function sound_1_Complete(event:Event):void {
    trace("one complete");
    mySoundChannel2 = mySoundTwo.play();
    mySoundChannel2.addEventListener(Event.SOUND_COMPLETE, sound_2_Complete);
}
 
function sound_2_Complete(event:Event):void {
    trace("two complete");
    mySoundChannel3 = mySoundThree.play();
    mySoundChannel3.addEventListener(Event.SOUND_COMPLETE, sound_3_Complete);
}
 
function sound_3_Complete(event:Event):void {
    trace("three complete");
}

Hasta acá todo fácil, lo que fue una novedad para mi es que es posible meter objetos dentro de arrays, por lo que cree un array con sonidos (objetos) adentro y fui cargando un sonido después del otro, de forma que era automatizado, dinámico y que podía ser cambiado en tiempo de ejecución sin problemas.

var sounds:Array = [new SoundOne(), new SoundTwo(), new SoundThree()];
 
var channels:Array;
 
channels[0] = Sound(sounds[0]).play();
 
SoundChannel(channel[0]).addEventListener(Event.SOUND_COMPLETE, playNext);
 
function playNext(e:Event):void
 
{
 
var index:Number = channels.indexOf(e.currentTarget);
 
trace("played sound " + (index + 1));
 
if(index < sounds.lenth - 1)
 
{
 
index++;
 
channels[index] = Sound(sounds[index]).play();
 
SoundChannel(channels[index]).addEventListener(Event.SOUND_COMPLETE, playNext);
 
}
 
}
sounds.push(new SoundFour()); // sólo habría que asegurarse de llamar a esto antes que el sonido cuatro termine de reproducirse