l'evento di caricamento viene già monitorato dal metodo onLoad, ossia tutto quello che accade lì dentro viene eseguito solo nel momento in cui le variabili sono caricate e vi si può far riferimento, perciò puoi utilizzare tali variabili solo all'interno di quella funzione
nel tuo caso manca un if di verifica:

codice:
stop();
dati = new LoadVars();
dati.onLoad = function(success) {
	if(success){
		ArrayID = this.titolo.split("|");
		ArrayDesc = this.descrizione.split("|");
		num = this.numero;
		dir = this.dir;
		play();
		i = 0;
	}
};
dati.load("variabili.php");
nel tuo caso hai inserito un play, quindi immagino che la variabile dir venga utilizzata nel frame successivo... in questo modo dovrebbe funzionare correttamente