Hola Moisés
tanto cuando cargas un xml como una imagen siempre dispones de los bytes
cargados y los totales, asi que te puedes calcular el porcentaje asi
p = Math.round( miXML.getBytesLoaded()*100 / miXML.getBytesTotal() );
donde p es un numero entero entre 0 y 100
Lo mismo puedes hacer para cada imagen
p = Math.round( miImagen.getBytesLoaded()*100 / miImagen.getBytesTotal() );
Esto lo puedes comprobar en un setInterval o en un enterframe, y mostrarlo
en un campo de texto o con una animacion de 100 fotogramas, y le dices
anim.gotoAndStop(p);
suerte.
----- Original Message -----
From: "Nueva Imagen Digital, S.L." <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, March 01, 2006 1:00 AM
Subject: [ASNativos] Cargador para XML
Buenas noches ASfanaticos
Se que algo de esto hay escrito en la lista, lo he leido.. pero la verdad
es que no lo entiendo. Os espongo mi problema
Estoy montando un sitio web con varios swf cargados con el loadMovieNum,
todas los swf tienen su precargador típico y este funciona.
Ahora bien, en unas partes de la web existe una galeria de espectaculos
con una tira de imágenes con los correspondientes carteles de cada uno de
estos.
Cada espectáculo se compone de sinopsi, cartel, fotos, titulo, etc, que lo
cargo todo a traves de un xml que tiene esta estructura
</espectaculo>
<espectaculo id="2" nombre="" nom="" castellano="" valenciano=""
cartel="" cartell="">
<fotos>
<foto></foto>
</fotos>
</espectaculo>
el xml se parsea bien, y dinámicamente se me crea la galeria según cuantos
espectaculos existan en el xml.
mi código crea primero los clips para cada uno de los espectaculos, carga
las imagenes y asocia a cada uno de los elementos de la tira de imágenes
todo los datos que necesita del xml.
Pero el problema, es que desde que se crean los clips(boton) para cada uno
de los elementos del xml, se quedan en blanco los movieclips y no consigo
crear un cargador cutre para xml para que no tener la tira de imágenes en
blanco hasta que se terminan de cargar todas las imágenes.
Por favor, hechadme una mano (y que no sea al cuello, jejeje) que llevo
muchos dias pasando sueño para intentar solucionar esto y no lo consigo.
Os pongo tb el código que utilizo para cargar el xml y la galería.
stop();
// Initialize useful variables and picture array
cellWidth = tira_mc.reel_mc.cell_mc._width;
center = tira_mc._width / 2;
pics = new Array ();
//esto es lo que hace que la tira se mueva hacia un lado u otro
onEnterFrame = function () {
if (_xmouse > 330 && _ymouse < 265) {
reelSpeed = ((_xmouse - 330) - center) / 10;
tira_mc.reel_mc._x += reelSpeed;
// Apply limits to reel position
leftStop = center - tira_mc.reel_mc._width + cellWidth / 2;
rightStop = center - cellWidth / 2;
if (tira_mc.reel_mc._x < leftStop) {
tira_mc.reel_mc._x = leftStop;
} else if (tira_mc.reel_mc._x > rightStop) {
tira_mc.reel_mc._x = rightStop;
}
}
};
// esto es el constructor del objeto espectaculo
espectaculo = function (id, nombre, nom, castellano, valenciano, cartel,
cartell, fotos) {
this.id = id;
this.nombre = nombre;
this.nom = nom;
this.castellano = castellano;
this.valenciano = valenciano;
this.cartel = cartel;
this.cartell = cartell;
this.fotos = fotos;
};
//aqui defino para cada celdita lo que tiene k cargar en ella
NewCell = function (num, details) {
// Create a new cell
originalClip = tira_mc.reel_mc.cell_mc;
newClip = originalClip.duplicateMovieClip ("cell" + num, num);
// Set cell position and text fields
newClip._x = num * 120;
// Coloco el contenido de cada uno de los espectaculos en su celdita
del scroll content = newClip.placeholder_mc;
//PONGO EL CARTEL CORRESPONDIENTE
//controlo si hay cartel o no
if (details.cartel != undefined && details.cartel != null &&
details.cartel != "") {
content.loadMovie (details.cartel);
} else if (details.cartell != undefined && details.cartell != null &&
details.cartell != "") {
content.loadMovie (details.cartell);
} else {
//si no hay pongo uno genérico
content.loadMovie ("./images/logo_.gif");
}
//DEFINO LAS FUNCIONES DE BOTON DE CADA celdita del scroll
newClip.onRelease = function () {
//compruebo si hay cartel
if (details.cartel != undefined && details.cartel != null &&
details.cartel != "") {
foto.clip_foto.loadMovie (details.cartel);
} else if (details.cartell != undefined && details.cartell != null
&& details.cartell != "") {
foto.clip_foto.loadMovie (details.cartell);
} else {
//si no hay pongo uno genérico
foto.clip_foto.loadMovie ("./images/logo_.gif");
}
//compruebo si hay texto
if (details.castellano != undefined && details.castellano != null
&& details.castellano != "") {
texto_espectaculo.sinopsi.text = details.castellano;
} else if (details.valenciano != undefined && details.valenciano !=
null && details.valenciano != "") {
texto_espectaculo.sinopsi.text = details.valenciano;
} else {
//si no hay pongo uno genérico
texto_espectaculo.sinopsi.text = "Contacte con nosotros para
obtener más información";
}
for (m = 0; m < 12; m++) {
this._parent._parent._parent["cuad" + m].gotoAndStop (3);
this._parent._parent._parent["cuad" + m].enable = false;
}
for (k = 0; k < details.fotos.length; k++) {
if (details.fotos[k] != undefined) {
this._parent._parent._parent["cuad" + k].gotoAndStop (2);
this._parent._parent._parent["cuad" + k].enable = true;
this._parent._parent._parent["cuad" + k].foto =
details.fotos[k];
this._parent._parent._parent["cuad" + k].onPress = function
() {
this.gotoAndStop (2);
foto.clip_foto.loadMovie (this.foto);
};
this._parent._parent._parent["cuad" + k].onRelease =
function () {
this.gotoAndStop (1);
};
} else {
}
}
};
if (num == 0) {
//compruebo si hay cartel
if (details.cartel != undefined && details.cartel != null &&
details.cartel != "") {
foto.clip_foto.loadMovie (details.cartel);
} else if (details.cartell != undefined && details.cartell != null
&& details.cartell != "") {
foto.clip_foto.loadMovie (details.cartell);
} else {
//si no hay pongo uno genérico
foto.clip_foto.loadMovie ("./images/logo_.gif");
}
//compruebo si hay texto
if (details.castellano != undefined && details.castellano != null
&& details.castellano != "") {
texto_espectaculo.sinopsi.text = details.castellano;
} else if (details.valenciano != undefined && details.valenciano !=
null && details.valenciano != "") {
texto_espectaculo.sinopsi.text = details.valenciano;
} else {
//si no hay pongo uno genérico
texto_espectaculo.sinopsi.text = "Contacte con nosotros para
obtener más información";
}
for (m = 0; m < 12; m++) {
this["cuad" + m].gotoAndStop (3);
this["cuad" + m].enable = false;
}
for (k = 0; k < details.fotos.length; k++) {
if (details.fotos[k] != undefined) {
this["cuad" + k].gotoAndStop (2);
this["cuad" + k].enable = true;
this["cuad" + k].foto = details.fotos[k];
this["cuad" + k].onPress = function () {
this.gotoAndStop (2);
foto.clip_foto.loadMovie (this.foto);
};
this["cuad" + k].onRelease = function () {
this.gotoAndStop (1);
};
} else {
}
}
}
};
// Set up picture objects
pics = new Array ();
galeria = new XML ();
galeria.load ("./xml/zarzuela.xml");
galeria.ignoreWhite = true;
galeria.onLoad = function (exito) {
if (exito) {
//miro cuantos espectaculos hay en el xml
cantidadEspectaculos = this.firstChild.childNodes.length;
//para cada espectaculo hago lo siguiente
for (i = 0; i < cantidadEspectaculos; i++) {
//controlo cuantas fotos tiene cada espectaculo, aparte de la
del cartel
cantidadFotos =
this.firstChild.childNodes[i].childNodes[0].childNodes.length;
vectorFotos = new Array ();
//las pongo en un vector para despues trabajar con ellas
for (j = 0; j < cantidadFotos; j++) {
vectorFotos.push
(this.firstChild.childNodes[i].childNodes[0].childNodes[j].firstChild.nodeValue);
}
//Guardo los datos en el otro vectos llamado pics que contiene
toda la información de cada espectaculo.
pics[i] = new espectaculo
(this.firstChild.childNodes[i].attributes.id,
this.firstChild.childNodes[i].attributes.nombre,
this.firstChild.childNodes[i].attributes.nom,
this.firstChild.childNodes[i].attributes.castellano,
this.firstChild.childNodes[i].attributes.valenciano,
this.firstChild.childNodes[i].attributes.cartel,
this.firstChild.childNodes[i].attributes.cartell, vectorFotos);
NewCell (i, pics[i]);
}
}
};
bueno, pues gracias por todo y seguid asi que ayudais un monton
Gracias.
Moisés
----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------
----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------