Ciao.
Ci sono alcune cose che dovresti considerare:
1 - converrebbe utilizzare la classe MovieClipLoader con cui si ha un maggiore controllo del caricamento e quindi una migliore ottimizzazione dello script e di tutto il procedimento.
2 - hai impostato il tempo del setInterval a 1 (tieni conto che si parla di millesimi di secondo). Questo significa che la funzione preloadMovie viene richiamata, teoricamente, 1000 volte al secondo = spreco di risorse e possibili rallentamenti nell'esecuzione del filmato.
Un valore ottimale può variare tra 30 e 20, non di meno perchè intanto l'aggiornamento video è relativo alla frequenza fotogrammi che hai impostato sul filmato, nonché alla velocità di elaborazione del processore. Quindi, a meno che tu non stia testando il tuo filmato su un computer della NASA, non credo ti serva fare un refresh 1000 volte al secondo.
3 - il caricamento dei file swf avviene in streaming e il momento di avvio del filmato è determinato da un certo valore di buffering che viene calcolato automaticamente dal player flash. E' normale quindi che il tuo filmato B parta anche se il preload non è concluso.
Dovresti inserire uno stop sul primo frame del filmato B oppure impostare il clip contenitore in modo che resti fermo o invisibile durante il caricamento.
Ad esempio basterebbe inserire dentro la funzione preloadMovie, qualcosa del genere:
Per una maggior pulizia del codice e ottimizzazione del procedimento, sarebbe comunque più consigliato utilizzare la classe MovieClipLoader.codice:placeholder._visible = false; placeholder.stop();