Foros del Web » Creando para Internet » Flash y Actionscript »

Cosas raras con flash y xml

Estas en el tema de Cosas raras con flash y xml en el foro de Flash y Actionscript en Foros del Web. Hola! Es mi primer mensaje y me alegro mucho de que existan cosas como éstas. Le he dado muchas vueltas y no tengo ni idea ...
  #1 (permalink)  
Antiguo 13/10/2006, 12:18
 
Fecha de Ingreso: octubre-2006
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta Cosas raras con flash y xml

Hola! Es mi primer mensaje y me alegro mucho de que existan cosas como éstas.

Le he dado muchas vueltas y no tengo ni idea de lo que pasa, así que me he decidido a preguntar (aunque por cierto no me gusta, prefiero solucionarme mis problemas...)

Al grano. Estoy haciendo un Flash que lee de un XML generado con PHP (trabalenguas...) para rellenar un ComboBox. El caso es que cuando lanzo el Flash ¡a veces funciona y otras no funciona!!! Y esto trabajando localmente (es decir, el Flash en mi ordenador y el XML en el Servidor) porque cuando subo el Flash al Servidor no va ni para atrás... la verdad es que es muy raro y por eso me he decidido a preguntar.

Este es el archivo php que genera el XML, muestra por pantalla pero también graba un fichero; el flash lee del fichero (también he probado de la otra forma y nada...):

(**** Lo siento no me deja meter los enlaces (cuando haga 30 posts... ) ****)

(Hay que poner lo de ver código fuente para ver el XML...)

El flash se puede ver aquí (pero no funciona, eh..)
(**** Lo siento no me deja meter los enlaces (cuando haga 30 posts... ) ****)

Por último adjunto el código "caliente", donde está el mehollo del asunto...

Código:
XML.prototype.ignoreWhite=true;
// objeto XML que recibe el listado de usuarios
Poblaciones=new XML();
// No mostramos el combo hasta que no se carguen los datos...
Combo.visible = false ;
// Al cargarse los datos...
Poblaciones.onLoad=function(exito){
	if(exito){
		var raiz=this.firstChild;
		var hijos=this.firstChild.childNodes.length;
		var provincia = "undefined" ;
//		Combo.addItem ({data:0,label:"Población:"}) ;
		for(var n=0;n<hijos;n++){
			// Esto es para indicar las provincias
			if (provincia != raiz.childNodes[n].attributes.Provincia) {
				Combo.addItem 
					({data:raiz.childNodes[n].attributes.Provincia,
					label:"en "+raiz.childNodes[n].attributes.Provincia+":"}) ;				
				provincia = raiz.childNodes[n].attributes.Provincia ;
			}
			// Rellenamos el ComboBox
			Combo.addItem ({data:n,
				label:raiz.childNodes[n].attributes.Nombre}) ;
		} // fin For

	// Crear un objeto detector.
	var cbListener:Object = new Object();

	// Asignar una función al objeto detector.
	cbListener.change = function(event_obj:Object) {
		Cartel.gotoAndPlay(1) ;
		Cartel.gotoAndPlay(2) ;
		LabelP.text = event_obj.target.selectedItem.label ;
		Cartel.LabelP.text = event_obj.target.selectedItem.label ;
		var id = event_obj.target.selectedItem.data ; 
		trace("id: "+Cartel.LabelP.text);
		unloadMovie("_root.peliculas");
		unloadMovie("_root.peliculas2");
		loadMovie("almenara.swf", "_root.peliculas");
		// Posicionamos los mapas
		_root.menu.Xpos = parseInt(raiz.childNodes[id].attributes.Mx) ;
		_root.menu.Ypos = parseInt(raiz.childNodes[id].attributes.My) ;
		_root.cuadro.Xpos = parseInt(raiz.childNodes[id].attributes.Cx) ;
		_root.cuadro.Ypos = parseInt(raiz.childNodes[id].attributes.Cy) ;
	};
	// Añadir detector.
	Combo.addEventListener("change", cbListener);
	// Una vez añadidos los datos, mostramos el combo
	Combo.visible = true ;
	} // fin If
	else { parse ("Error al cargar los datos") ; }
} // fin onLoad


// acceso a la base de datos para obtener un listado de poblaciones
// Poblaciones.load("URL DE PEGA CENSURADA") ;
Poblaciones.load(""URL DE PEGA CENSURADA") ;
Muchas gracias por su ayuda, seguramente será una tontería pero yo ya no sé por donde tirar.

Un cordial saludo.
  #2 (permalink)  
Antiguo 13/10/2006, 12:55
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 13 años
Puntos: 43
Hola nade!

Parece ser que tu código en flash no es el causante del problema, yo lo que veo es que todo reside del código del lado servidor, por lo que dices que a veces funciona y a veces no, me pregunto porqué generas el xml vía php y lo guardas en un archivo y desde ahí lees en flash, ya intestaste generar el xml al vuelo en php y desde flash leerlo?, te siguió dando los mismos resultados?.

Otra cosa cosa es poner un trace dentro del manejador de evento onLoad, para ver si entra cuando no te muestra nada en pantalla, en dado caso utiliza el debugger de flash para ver donde se encuentra el "horror".

Código:
Poblaciones.onLoad=function(exito:Boolean):Void
{
	if(exito)
        {
          trace("Si se cargo el XML...");
         //...
        }
};

Un saludo!
  #3 (permalink)  
Antiguo 15/10/2006, 16:08
 
Fecha de Ingreso: octubre-2006
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Raro raro...

Antes que nada, gracias por responder tan rápido. Es un placer saber que uno no está solo aquí fuera.

Probé primero generando el XML "al vuelo", pero como hacía cosas raras (a veces funciona y otras veces no) pensé que era un problema del Servidor, es decir, que no generaba siempre el XML, así que lo hice con el archivo (sin vuelo) pensando que habiendo un archivo generado lo leería siempre... me equivocaba.

Lo más raro de todo es que aunque no devuelva datos (es decir, cuando el ComboBox queda vacío) sí que se produce un éxito en el evento onLoad, lo he comprobado en el modo de depuración y efectivamente entra dentro de if(exito){} pero no hace nada...

Lo último que he pensado es que se trate de un problema de "seguridad" de flash o algo así, también puede ser que haya generado mal el XML, lo pongo aquí a ver si hay alguna metedura de pata.

Esta noche me voy a poner con esto... si me entero de lo ke pasa ya os aviso....

...y mil gracias
  #4 (permalink)  
Antiguo 15/10/2006, 16:09
 
Fecha de Ingreso: octubre-2006
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Sonrisa Raro raro...

Antes que nada, gracias por responder tan rápido. Es un placer saber que uno no está solo aquí fuera.

Probé primero generando el XML "al vuelo", pero como hacía cosas raras (a veces funciona y otras veces no) pensé que era un problema del Servidor, es decir, que no generaba siempre el XML, así que lo hice con el archivo (sin vuelo) pensando que habiendo un archivo generado lo leería siempre... me equivocaba.

Lo más raro de todo es que aunque no devuelva datos (es decir, cuando el ComboBox queda vacío) sí que se produce un éxito en el evento onLoad, lo he comprobado en el modo de depuración y efectivamente entra dentro de if(exito){} pero no hace nada...

Lo último que he pensado es que se trate de un problema de "seguridad" de flash o algo así, también puede ser que haya generado mal el XML, lo pongo aquí a ver si hay alguna metedura de pata.

Código:
<datos>
	<registro IdPoblacion='1'Provincia='Valencia'Nombre='Albalat dels Sorells'Mx='420.0'My='-105.0'Cx='809.0'Cy='160.0'/>
	<registro IdPoblacion='12'Provincia='Valencia'Nombre='Albalat dels Tarongers'Mx='416.0'My='-40.0'Cx='809.0'Cy='160.0'/>
	<registro IdPoblacion='13'Provincia='Valencia'Nombre='Barxeta'Mx='418.0'My='-300.0'Cx='811.3'Cy='180.4'/>
	<registro IdPoblacion='14'Provincia='Valencia'Nombre='Bétera'Mx='450.0'My='-87.0'Cx='807.3'Cy='165.2'/>
	<registro IdPoblacion='15'Provincia='Valencia'Nombre='Eliana'Mx='482.0'My='-94.0'Cx='809.0'Cy='160.0'/>
	<registro IdPoblacion='16'Provincia='Valencia'Nombre='Gilet'Mx='420.0'My='-50.0'Cx='809.0'Cy='160.0'/>
	<registro IdPoblacion='17'Provincia='Valencia'Nombre='Llíria'Mx='494.0'My='-69.0'Cx='805.0'Cy='165.0'/>
	<registro IdPoblacion='18'Provincia='Valencia'Nombre='Meliana'Mx='432.0'My='-113.0'Cx='809.0'Cy='160.0'/>

	<registro IdPoblacion='19'Provincia='Valencia'Nombre='Moncada'Mx='439.4'My='-35.5'Cx='807.3'Cy='165.2'/>
	<registro IdPoblacion='20'Provincia='Valencia'Nombre='Museros'Mx='413.4'My='-6.5'Cx='809.0'Cy='160.0'/>
	<registro IdPoblacion='21'Provincia='Valencia'Nombre='Náquera'Mx='447.3'My='30.9'Cx='807.3'Cy='165.2'/>
	<registro IdPoblacion='22'Provincia='Valencia'Nombre='Olocau'Mx='447.3'My='30.9'Cx='807.3'Cy='165.2'/>
	<registro IdPoblacion='23'Provincia='Valencia'Nombre='Requena'Mx='700.0'My='-100.0'Cx='798.0'Cy='168.2'/>
	<registro IdPoblacion='24'Provincia='Valencia'Nombre='Sagunto'Mx='413.4'My='-6.5'Cx='809.0'Cy='160.0'/>
	<registro IdPoblacion='25'Provincia='Valencia'Nombre='Serra'Mx='447.3'My='30.9'Cx='807.3'Cy='165.2'/>
	<registro IdPoblacion='26'Provincia='Castellon'Nombre='Almenara'Mx='429.3'My='110.8'Cx='809.0'Cy='157.2'/>
	<registro IdPoblacion='27'Provincia='Castellon'Nombre='Caudiel'Mx='446.4'My='110.8'Cx='807.0'Cy='157.2'/>

	<registro IdPoblacion='28'Provincia='Castellon'Nombre='Segorbe'Mx='429.3'My='110.8'Cx='809.0'Cy='157.2'/>
	<registro IdPoblacion='31'Provincia='Alicante'Nombre='Benitachell (Costa Blanca)'Mx=''My=''Cx=''Cy=''/>
	<registro IdPoblacion='9'Provincia='Alicante'Nombre='Denia'Mx='282.1'My='-394.8'Cx='821.3'Cy='191.3'/>
</datos>
Esta noche me voy a poner con esto... si me entero de lo ke pasa ya os aviso....

...y mil gracias
  #5 (permalink)  
Antiguo 15/10/2006, 16:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Pues eso, una tontería

Ya ha salido, al final no ha costado tanto...

El problema era que el ComboBox se creaba en el mismo fotograma donde estaba el código fuente. Desplazando el código unos fotogramas hacia delante deja de hacer "cosas raras" (Uffff <alivio>)

Supongo que cuando no se mostraba era porque flash aún no había creado el Combo al ejecutarse el código, por ello los datos se perdían en los oscuros laberintos del hiperespacio...

Bueno, disculpen las molestias... hasta otra...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:43.