El parsear un XML no es lo mio, pero yo utilizaria la clase MOVIECLIPLOADER
para saber el momento justo de carga.
<code>
/*****************************************
Con este codigo precargaras cualquier imagen o MC que tengas
despues del parseo de tu XML.
Hay mas eventos, pero solo utilizaremos 2:
- onLoadProgress, se dispara mientras se esta cargando tu MC. Hay es
donde metes tu barra de precarga
- onLoadComplete, cuando se termina la carga y se visualiza el MC. OJO,
yo pondria aqui la historia
de bajar el volumen.
*****************************************/
var carga:MovieClipLoader = new MovieClipLoader();
var orejas:Object = new Object();
orejas.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
// Por si quieres hacer una precarga de los MC
var porcentajeCarga:Number;
porcentajeCarga = (loadedBytes*100)/totalBytes;
};
orejas.onLoadComplete = function(target_mc) {
bajar(imagenes.firstChild.childNodes[record].attributes.ruta); //
Bajamos el Volumen dependiendo del archivo. VER FUNCION MAS ABAJO
};
carga_mcl.addListener(orejas);
</code>
Luego retocamos tu codigo para poder utilizarlo.
<code>
/***********************************
Este clip lo creo dinamicamente pq lo utilizaremos de contenedor para la
carga de tus imágenes
createEmptyMovieClip(NOMBRE DEL CLIP, PROFUNDIDAD DE ESTE EN TU PELI);
***********************************/
var record:Number = 0 // Inicializo tu variable record y le doy valor
inicial
var total:Number // Inicializo tu variable total, pero no le doy valor.
var clip_mc:Movieclip = this.createEmptyMovieClip("vacio_mc",
this.getNextHighestDepth()); // Creo el container
clip_mc._x = 0; // Posicionas este clip en la posicion X que necesites
clip_mc._y = 0; // Posicionas este clip en la posicion Y que necesites
var imagenes:XML = new XML();
imagenes.ignoreWhite = true;
imagenes.onLoad = function(exito) {
if (exito) {
/************************************
Aqui lo que hago es en el contenedor que hemos creado antes inserto
un nuevo MC en el punto 0,0
y cargo dentro de el la imagen o MC que quieras cargar. Mas que nada
para luego poder cargamelo cuando carguemos.
A este clip no le damos posicion x,y pq ya se lo dimos al contenedor
principal.
************************************/
var imagen_mc:MovieClip = clip_mc.createEmptyMovieClip("count_mc",
0);
/***********************************
Cargamos la ruta parseada en el clip que acabamos de crear
***********************************/
record++;
total = this.firstChild.childNodes.length;
var parseo:String =
this.firstChild.childNodes[record].attributes.ruta;
carga_mcl.loadClip("fotos/luna_vtn/"+parseo , imagen_mc);
}
}
imagenes.load("fotos/luna_vtn/luna.xml"); // Yo siempre aconsejo poner el
metodo LOAD despues del evento ONLOAD
siguiente.onRelease = function() {
if (this._parent.record >= this._parent.total) {
this._parent.record = 0;
gotoAndStop(1);
} else {
this._parent.record ++;
}
/************************************
En vez de cargar otra vez el XML, lo que debes de hacer es llamar al XML
que creaste al principio.
************************************/
var imagen_mc:MovieClip =
this._parent.clip_mc.createEmptyMovieClip("count"+this._parent.clip_mc.getNextHighestDepth()+"_mc",
this._parent.clip_mc.getNextHighestDepth());
var parseo:String =
this._parent.imagenes.firstChild.childNodes[this._parent.record].attributes.ruta;
this._parent.carga_mcl.loadClip("fotos/luna_vtn/"+parseo , imagen_mc);
};
// Con esta funcion comprobamos el archivo a insertar y lo bajamos
dependiendo de la extension que tenga
function bajar(cadena:String):void{
var str:String = cadena.substr(cadena.lastIndexOf("."));
if(str=='swf'){
// El sonido es 0
} else {
// El sonido es 100;
}
}
</code>
Evidentemente, habra muchas maneras mejores de hacerlo. Pero bueno, una
facil y rapida es esta. Puerde haber errores de codigo, pq lo escribi
directamente despe aqui y no lo he testado en flash.
Un saludo.
-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------