Comunidad de diseño web y desarrollo en internet online

XML + AS3

Citar            
MensajeEscrito el 02 Sep 2008 05:19 pm
Hola amigos.

Tengo 2 botones en el escenario con el nombre de instancia CS0 y CS1. y deseo que cuando realice clic sobre ellos lea el nombre de la instancia, me lo busqe en un archivo xml y llene unos campos de texto dinámico localizados en un clip de película.

Tengo el siguiente archivo XML:

Código :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DOCUMENTO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <CS ID="CS0">
      <NOMBRE>La Casita Feliz</NOMBRE>
      <FOTO>LaCasitaFeliz.png</FOTO>
      <TEL>6010101</TEL>
      <EMAIL>[email protected]</EMAIL>
      <DIR>Cl 01 23-45</DIR>
      <MPIO>Sohacha</MPIO>
      <DPTO>Cundinamarca</DPTO>
      <DOCS>
         <DOC>DOC_LCF 1.pdf</DOC>
         <DOC>DOC_LCF 2.docx</DOC>
         <DOC>DOC_LCF 3.pdf</DOC>
         <DOC>DOC_LCF 4.jpg</DOC>
      </DOCS>
   </CS>
   <CS ID="CS1">
      <NOMBRE>Los Gnomos</NOMBRE>
      <FOTO>LosGnomos.png</FOTO>
      <TEL>2454567</TEL>
      <EMAIL>[email protected]</EMAIL>
      <DIR>Cl 01 23-45</DIR>
      <MPIO>Quimbaya</MPIO>
      <DPTO>Quindio</DPTO>
      <DOCS>
         <DOC ID="1">DocB 1.pdf</DOC>
         <DOC ID="2">DocB 2.doc</DOC>
         <DOC ID="3">DocB 3.pdf</DOC>
         <DOC ID="4">DocB 4.jpg</DOC>
      </DOCS>
   </CS>
</DOCUMENTO>

Se me presenta el inconveniente cuando quiero consultar en el archivo xml por los atributos de CS, almacenarlo en una variable y emplearla como una abreviación para otras consultas:

Código :

function btn_csClick(event:MouseEvent):void {
   var nomcs:String = event.target.name

   // La siguiente línea me genera el error
   var in1:XML=archXML.CS.(@ID=nomcs) //es un atajo para llenar los textos dinámicos dentro del clip (vEmergente)

  vEmergente.titulo.htmlText= "<b>el nombre es <br>"+in1.NOMBRE+"</b>";
   vEmergente.inform.htmlText= "Dirección "+in1.DIR+"<br>"+in1.MPIO+", "+in1.DPTO+".<br>"+"Teléfono "+in1.TEL+".<br>"+"e-mail: "+in1.EMAIL;
}

Gracias por su colaboración.
Saludos

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Sep 2008 05:55 pm

Código :

var in1:XML= new XML(archXML.CS.(@ID=nomcs));

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 02 Sep 2008 05:59 pm
Prueba

Código ActionScript :

var in1:XML=XML(archXML.CS.(@ID=nomcs))


La próxima vez escribe qué error se produce, para que podamos ayudarte de forma más eficiente.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 02 Sep 2008 07:39 pm
Gracias Zah. Funciona muy bien.

Estoy dando mis primeros pasos con AS3 y para el mismo caso que presenté arriba tengo esta duda:

como hago para que la siguiente función funcione únicamente para las instancias de botón que se encuentran en el lienzo. Ocurre que la aplica para todo los objetos que se encuentra en el escenario y solo quiero que aplique a las instancias del mismo boton (CS0, CS1, CS2, CS3, ....)

Código :

function btn_csOver(event:MouseEvent):void {
   nombtCS = event.target.name
   event.target.overState.getChildAt(1).text= archXML.CS.(@ID==nombtCS).NOMBRE
}

this.stage.addEventListener(MouseEvent.MOUSE_OVER, btn_csOver);


La anterior función lee el nombre de la instancia de botón, lo busca en el archivo XML y presenta el item NOMBRE en una caja de texto dinámico localizada dentro de un botón cuando el mouse se coloca sobre él

Gracias.
Saludos.

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Sep 2008 08:26 pm
El anterior código genera el siguiente error cuando se realiza clic en un objeto distinto a un botón (por ejemplo una caja de texto):

ReferenceError: Error #1069: No se encontró la propiedad overState en flash.text.TextField y no hay ningún valor predeterminado.
at pruebas_3_fla::MainTimeline/btn_csOver()

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Sep 2008 07:55 am
pues, en vez de añadir el detector de eventos a stage, añádelo a los elementos que te interesen. Suponiendo que tienes botones con nombre de instancia CS0...CS12, puedes hacerlo así:

Código ActionScript :

for (var i:uint = 0; i<13; i++)
{
this["CS"+i].addEventListener(MouseEvent.MOUSE_OVER, btn_csOver);
}


Lo que recorrería todos los valores enteros de i desde 0 hasta 12, y asignaría el evento a todos los elementos que se llamen CS0... CS12.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 08 Sep 2008 02:34 pm
Gracias.
Con respecto al XML al inicio de esta página, estoy aprendiendo a hacer consultas y encuentro un inconveniente que agradecería me yaudarna a solucionar:
La idea es que a partir de la variable que almacena el archiva xml, generar otra que contenga todos los nodos diferentes a un municipio determinado, el caso es el siguiente:

Código ActionScript :

var archXML:XML;
var infoCol:XML;

xmlLoader.addEventListener(Event.COMPLETE, almacenarXML);
xmlLoader.load(new URLRequest("infoCS/CS.xml"));

function almacenarXML(e:Event):void {
   XML.ignoreWhitespace = true;
   archXML = new XML(e.target.data);
   infoCol = new XML(archXML.CS.(MPIO!="Quimbaya"))  // GENERA EL ERROR
   trace(infoCol)
}


El error dice lo siguiente:

Código :

TypeError: Error #1088: El marcado del documento que sigue al elemento raíz debe estar bien formado.
   at pruebas_9_fla::MainTimeline/almacenarXML()
   at flash.events::EventDispatcher/dispatchEventFunction()
   at flash.events::EventDispatcher/dispatchEvent()
   at flash.net::URLLoader/onComplete()


pero si realizo la siguiente consulta todo funciona perfectamente:

Código ActionScript :

infoCol = new XML(archXML.CS.(MPIO=="Quimbaya"))

Que es lo que sucede?. No se como podría solucionarlo.

Saludos.

[Zah] Utiliza las etiquetas apropiadas (code, xml, as, php...) para publicar código[/Zah]

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 08 Sep 2008 05:33 pm
No he podido hacer filtros (!=) de este archivo xml. Agradecería cualquier ayuda.

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 08 Sep 2008 09:48 pm
No se que puedes estar haciendo mal, pero el código no tiene problemas, he copiado tu XML para un archivo, he copiado y pegado tu código y funciona sin problemas, no se donde tienes el problema?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 08 Sep 2008 10:12 pm
Acabo de darme cuenta que funciona muy bien con dos CS (CS0 y CS1). Pero si se le agregan nodos adicionales genera el error, como si no supiera como organizar la información.

Utilizando el siguiente xml que tiene 3 CS (CS0, CS1 y CS2):

Código :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DOCUMENTO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <CS ID="CS0">
      <NOMBRE>La Casita Feliz</NOMBRE>
      <FOTO>LaCasitaFeliz.png</FOTO>
      <TEL>6010101</TEL>
      <EMAIL>[email protected]</EMAIL>
      <DIR>Cl 01 23-45</DIR>
      <MPIO>Sohacha</MPIO>
      <DPTO>Cundinamarca</DPTO>
      <DOCS>
         <DOC>DOC_LCF 1.pdf</DOC>
         <DOC>DOC_LCF 2.docx</DOC>
         <DOC>DOC_LCF 3.pdf</DOC>
         <DOC>DOC_LCF 4.jpg</DOC>
      </DOCS>
   </CS>
   <CS ID="CS1">
      <NOMBRE>Los Gnomos</NOMBRE>
      <FOTO>LosGnomos.png</FOTO>
      <TEL>2454567</TEL>
      <EMAIL>[email protected]</EMAIL>
      <DIR>Cl 01 23-45</DIR>
      <MPIO>Quimbaya</MPIO>
      <DPTO>Quindio</DPTO>
      <DOCS>
         <DOC ID="1">DocB 1.pdf</DOC>
         <DOC ID="2">DocB 2.doc</DOC>
         <DOC ID="3">DocB 3.pdf</DOC>
         <DOC ID="4">DocB 4.jpg</DOC>
      </DOCS>
   </CS>
<CS ID="CS2">
      <NOMBRE>La Casita Feliz</NOMBRE>
      <FOTO>LaCasitaFeliz.png</FOTO>
      <TEL>6010101</TEL>
      <EMAIL>[email protected]</EMAIL>
      <DIR>Cl 01 23-45</DIR>
      <MPIO>otro</MPIO>
      <DPTO>Cundinamarca</DPTO>
      <DOCS>
         <DOC>DOC_LCF 1.pdf</DOC>
      </DOCS>
   </CS>
</DOCUMENTO>


y el mismo codigo que genera el error:

Código :

var archXML:XML; 
var infoCol:XML;  
var xmlLoader:URLLoader = new URLLoader();

xmlLoader.addEventListener(Event.COMPLETE, almacenarXML); 
xmlLoader.load(new URLRequest("CS.xml")); 

function almacenarXML(e:Event):void {   
   XML.ignoreWhitespace = true;
   archXML = new XML(e.target.data);
   
   infoCol = new XML(archXML.CS.(MPIO!="Quimbaya"))  // GENERA EL ERROR    
   trace("Eliminado Quimbaya" + infoCol) 
}

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 08 Sep 2008 10:20 pm
Lógico, cuando tienes solo dos nodos, lo que hace el código es devolverte uno de los dos CS, quedaría algo como esto:

Código XML :

<CS ID="CS0">

   <!--Aqui todos los demás nodos-->

</CS>


Lo anterior es un XML válido, pero cuando tengas varios lo que te devolverá será esto:

Código XML :

<CS ID="CSO">

   <!--Aqui todos los demás nodos-->

</CS>

<CS ID="CS2">

   <!--Aqui todos los demás nodos-->

</CS>


y lo que ves arriba no es un XML, todo XML debe tener un nodo madre, esto que hay arriba es un XMLList, por eso te da error, por lo mismo que si copias lo que te sale arriba y lo pegas en un documento XML y lo tratas de leer te dirá que no es un XML válido.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 08 Sep 2008 10:50 pm

elchininet escribió:

Lógico, cuando tienes solo dos nodos, lo que hace el código es devolverte uno de los dos CS, quedaría algo como esto:

Código XML :

<CS ID="CS0">

   <!--Aqui todos los demás nodos-->

</CS>


Lo anterior es un XML válido, pero cuando tengas varios lo que te devolverá será esto:

Código XML :

<CS ID="CSO">

   <!--Aqui todos los demás nodos-->

</CS>

<CS ID="CS2">

   <!--Aqui todos los demás nodos-->

</CS>


y lo que ves arriba no es un XML, todo XML debe tener un nodo madre, esto que hay arriba es un XMLList, por eso te da error, por lo mismo que si copias lo que te sale arriba y lo pegas en un documento XML y lo tratas de leer te dirá que no es un XML válido.
Gracias Amigo. Tienes toda la razón.

Por charladito

26 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.