Comunidad de diseño web y desarrollo en internet online

descargar un URL Loader

Citar            
MensajeEscrito el 15 Feb 2010 12:15 pm
Hola, estoy haciendo un glosario mediante as3 y Xml. Consigo cargar el primer texto en un cargador mediante URL Loader, el problema es que inserta el segundo texto junto con el primero. Necesito conocer la manera de borrar el contenido del URL Loader y que cargue sólo el texto correcto.

Gracias y un saludo.

Por joemadriz

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Feb 2010 02:09 pm
Si reutilizas el mismo Loader reemplazas contenido al cargar, si creas uno nuevo que agregas con addChild estás acumulando

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Feb 2010 03:21 pm
Hola, gracias por responder, me he dado cuenta que cuando intento que me cargue el segundo texto del Xml no solo no me borra el anterior, si no que carga el primero otra vez, dejo el código a ver si me podéis echar una mano que ando un poco perdido. Un saludo!

Código XML :

<?xml version="1.0" encoding="UTF-8"?>
<terminos>
<palabra>
  <termino>Concepto1AAAAAA</termino>
 <descripcion> Definición1AAAA.  </descripcion> </palabra>
<palabra>
  <termino>Concepto2</termino>
 <descripcion> Definición2. </descripcion>
  </palabra>
<palabra>
  <termino>Concepto3</termino>
 <descripcion> Definición3.  </descripcion> </palabra>
<palabra>
</terminos>


Código ActionScript :

stop();

var array:Array=new Array();
var activo:Number=0;
array[0]="glosario/A.xml";
array[1]="glosario/B.xml";
array[2]="glosario/C.xml";
array[3]="glosario/D.xml";
array[4]="glosario/E.xml";
array[5]="glosario/F.xml";
array[6]="glosario/G.xml";
array[7]="glosario/H.xml";
array[8]="glosario/I.xml";
array[9]="glosario/J.xml";
array[10]="glosario/K.xml";
array[11]="glosario/L.xml";
array[12]="glosario/M.xml";
array[13]="glosario/N.xml";
array[14]="glosario/Ñ.xml";
array[15]="glosario/O.xml";
array[16]="glosario/P.xml";
array[17]="glosario/Q.xml";
array[18]="glosario/R.xml";
array[19]="glosario/S.xml";
array[20]="glosario/T.xml";
array[21]="glosario/U.xml";
array[22]="glosario/V.xml";
array[23]="glosario/W.xml";
array[24]="glosario/X.xml";
array[25]="glosario/Y.xml";
array[26]="glosario/Z.xml";


var carga:URLLoader = new URLLoader();
var xmlExterno:XML;
var i:Number;
var lista:XMLList;
var total:Number;
var paginar:Loader = new Loader();
var loc:Number=-94;


var peticion:URLRequest=new URLRequest();
var colorfondo=0xCCCCCC;

peticion.url=array[activo];
carga.load(peticion);
carga.addEventListener(Event.COMPLETE,cargarXML);   
var cajatermino:TextField=new TextField();
function cargarXML(event:Event){

   xmlExterno = new XML(event.target.data);
   lista=xmlExterno.children();
   total=lista.length();

   
   
   for(i=0;i<total;i++){
      cajatermino.background=true;
      //cajatermino2.background=true;
      loc+=47;
      

      if(colorfondo==0xCCCCCC){
         colorfondo=0xEEEEEE;
      }
      else if(colorfondo==0xEEEEEE){
         colorfondo=0xCCCCCC;
         }
      cajatermino.backgroundColor=colorfondo;
      
      
      cajatermino.width=650;
      //cajatermino2.width=700;
      //cajatermino.x=45.5;
      cajatermino.height=45;
      //cajatermino2.x=45.5;
      cajatermino.multiline=true;
      //cajatermino2.multiline=true;
      cajatermino.selectable=false;
      //cajatermino2.selectable=false;
      cajatermino.y=loc;
      //cajatermino2.y=loc2;
      cajatermino=new TextField();
      //cajatermino2=new TextField();
      
      cajatermino.type=TextFieldType.DYNAMIC;
      //cajatermino2.type=TextFieldType.DYNAMIC;



   cajatermino.htmlText="<font color='#FF0000'>"+lista[i].descendants("termino")+":</font> "+"<font color='#000000'>" +lista[i].descendants("descripcion")+"</font>";
   
      cargador.addChild(cajatermino);

      
   }
   cargador.removeChild(cajatermino);

}

//var container:cargador=new cargador();
function cambiaraA(e:MouseEvent){

activo=0;
carga.load(peticion);
carga.addEventListener(Event.COMPLETE,cargarXML);   
}

function cambiaraB(e:MouseEvent){
   activo=1;
   trace(array[activo]);
   carga.load(peticion);
   carga.addEventListener(Event.COMPLETE,cargarXML);   
   
   
}

boton_a.addEventListener(MouseEvent.CLICK, cambiaraA);
boton_b.addEventListener(MouseEvent.CLICK, cambiaraB);


Por joemadriz

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Feb 2010 03:34 pm
Buff, necesitas pensar primero una estructura, con dos letras puede parecer más o menos un ejercicio, pero nunca llegarás a la Z. Considera esto:

- Un loop para colocar los 27 botones con su letra y agregarle un listener a la misma función
- Darle un nombre de instancia a cada botón que contenga o el orden en el array del archivo a que apuntan
- Un listener que basado en el nombre de instancia que recibe, cargue el XML correspondiente en el URLLoader
- Un campo de texto que muestre el contenido cargado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Feb 2010 03:52 pm
Puedes ser más preciso?? los botones son instancias del mismo boton y cargo la letra correspondiente en un campo dinámico. Los campos de texto donde se carga el contenido se añaden con el cargador.addChild(cajatermino). Lo del listener no lo entiendo muy bien, estoy perdido con esto del XML. Gracias y un saludo!

Por joemadriz

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Feb 2010 04:06 pm
Algo así:

Código ActionScript :

var letras:Array = ["A", "B", ....."Z"];
function carga(letra:String){
  carga.load(new URLRequest("glosario/"+letra+".xml")); 
  carga.addEventListener(Event.COMPLETE,cargarXML);   
}
function cambiar(evt:MouseEvent){
   carga(evt.target.name)
}
for(var i:Number = 0; i<total; i++){
  var bot:boton = new Boton()
  bot.name = letras[i]
  bot.addEventListener(MouseEvent.CLICK, cambiar); 
  bot.x = 10 *i
  this.addChild(bot)
}


En cargarXML que maneja la vista tienes que:

- Limpiar el textfield
- Parsear el XML
- Rellenar el textfield con esa data

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Feb 2010 04:24 pm
Gracias otra vez, voy a darle unas vueltas a ver si saco algo en claro. Un saludo!

Por joemadriz

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Feb 2010 05:39 pm
Conseguí hacerlo funcionar a medias con tu código, está claro que algo hago mal en la carga, pues me carga uno después de otro no consigo que el nuevo texto reemplace al antiguo.

Por joemadriz

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Feb 2010 06:46 pm
Ok, si sigues esta lógica, como quedó cargarXML?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Feb 2010 08:26 am
Hola otra vez, sigo igual que ayer, ya consigo que cargue el texto de A.xml cuando pulsas A y que cargue B.xml con su correspondiente botón, pero uno no sustituye al otro, lo pone a continuación, estoy usando el mismo cargador. La función cargarXML queda así:

Código ActionScript :

function cargarXML(event:Event){

   xmlExterno = new XML(event.target.data);
   lista=xmlExterno.children();
   total=lista.length();

   for(i=0;i<total;i++){
      cajatermino.background=true;
      loc+=47;
      
      if(colorfondo==0xCCCCCC){
         colorfondo=0xEEEEEE;
      }
      else if(colorfondo==0xEEEEEE){
         colorfondo=0xCCCCCC;
         }
      cajatermino.backgroundColor=colorfondo;
      cajatermino.width=650;
      cajatermino.height=45;
      cajatermino.multiline=true;
      cajatermino.selectable=false;
      cajatermino.y=loc;
      cajatermino=new TextField();
      cajatermino.type=TextFieldType.DYNAMIC;

   cajatermino.htmlText="<font color='#FF0000'>"+lista[i].descendants("termino")+":</font> "+"<font color='#000000'>" +lista[i].descendants("descripcion")+"</font>";
   
      cargador.addChild(cajatermino);
   }
   
   cargador.removeChild(cajatermino);
   
}


Un saludo!

Por joemadriz

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Feb 2010 03:40 pm
Bueno, por fín lo arreglé, pongo la solución por si le sirve a alguien. Muchas gracias por tus respuestas Solisag, me han servido mucho.


Borro todo lo que hay dentro del cargador:

Código ActionScript :

var largo:Number = cargador_2.numChildren - 1;
while (largo > 1){
         largo = cargador_2.numChildren;
         cargador_2.removeChildAt(0);
   }


Un saludo!

Por joemadriz

10 de clabLevel



 

firefox

 

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