Comunidad de diseño web y desarrollo en internet online

cargar XML sin utilizar codigo en la linea de tiempo (as3)

Citar            
MensajeEscrito el 20 Mar 2010 12:08 am
Soy nuevo en el foro y no hace mucho que he comenzado con action script. Saludos a todos y gracias de ante mano por cualquier ayuda que reciba. Estoy seguro que lo aquí aclarado será de utilidad para muchas personas que tengan el mismo problema.
Vamos allá...
Tengo el siguiente problema para cargar archivos xml sin utilizar la linea de tiempo. Estoy utilizando hojas de código que no están sobre la linea de tiempo y no tengo fotogramas en el escenario. En la biblioteca tengo dos botones exportados para action script como Avanzar y Retroceder. También tengo un movie clip exportado con nombre de Paginas, que es donde quiero que se cargue el xml. Los botones son para avanzar y retroceder las fotos que están almacenadas en la carpeta imágenes, que se encuentra almacenada junto al archivo fla y al archivo xml. Las clases están en una otra carpeta denominada Clases. En clases tengo los siguientes archivos as.:

Código ActionScript :

//este es el botón Avanzar.as
package {
   import flash.display.MovieClip;
   import flash.display.SimpleButton;
   import flash.events.MouseEvent;
   public class Avanzar extends SimpleButton {
      public function Avanzar() {
         x=0;
         y=100;
      }
   }
}

Código ActionScript :

//este es el botón Retroceder.as
package {
   import flash.display.MovieClip;
   import flash.display.SimpleButton;
   import flash.events.MouseEvent;
   public class Retroceder extends SimpleButton{
      public function Retroceder() {
         x = 0;
         y = 0;
      }
   }
}

En paginas, como no comente arriba. Tengo un texto dinamico con propriedades de descripcion y otro clip de película con nombre de foto y con propiedades también de foto. Ninguno de los dos esta exportado para action script porque ya se encuentran en Paginas que si que esta exportada, como mencione arriba. Por favor me corrijan se estoy equivocado en esto también, en el caso de que tuviera que exportarlos y crearles clases a cada uno de ellos.

Código ActionScript :

//Este es el documento denominado Noticias.as que es documento principal del proyecto.
package {
   import flash.display.MovieClip;
   import flash.display.SimpleButton;
   import flash.events.MouseEvent;

   public class Noticias extends MovieClip {
      public var avanzar:Avanzar;
      public var retroceder:Retroceder;
      public var paginas:Paginas;

      public function Noticias() {
         avanzar = new Avanzar();
         avanzar.addEventListener(MouseEvent.CLICK,siguiente);
         addChild(avanzar);

         retroceder= new Retroceder();
         retroceder.addEventListener(MouseEvent.CLICK, atras);
         addChild(retroceder);


         paginas= new Paginas();
         addChild(paginas);


      }

      public function siguiente(event:MouseEvent) {
         if (i<total-1) {
            i++;
         }
         descripcion.text=lista[i].attribute("descripcion");
         fotos.load(new URLRequest(lista[i].attribute("imagen")));
      }
      public function atras(event:MouseEvent) {
         if (i>0) {
            i--;
         }
         descripcion.text=lista[i].attribute("descripcion");
         fotos.load(new URLRequest(lista[i].attribute("imagen")));
      }

   }
}

Código ActionScript :

//Este es el documento Paginas.as donde quiero que se carguen los XML.
package {
   import flash.display.MovieClip;
   import flash.display.SimpleButton;
   import flash.events.MouseEvent;
   import fl.containers.UILoader;
   import flash.net.URLRequest;
   import flash.net.URLLoader;
   import fl.data.DataProvider;

   public class Paginas extends MovieClip {
      public var loader:URLLoader = new URLLoader();
      public var XmlExterno:XML;
      public var i:Number=0;
      public var lista:XMLList;
      public var total:Number;
      public var fotos = new Loader();
      addChild(fotos);
      fotos.x=100;
      fotos.y=50;

      loader.addEventListener(Event.COMPLETE,cargarXML);
      loader.load(new URLRequest("galeria.xml"));


      public function Paginas() {
         x=300;
         y=200;
      }
      public function cargarXML(event:Event) { //Aqui el error 1046
         var cargador:URLLoader=event.target as URLLoader;
         XmlExterno=new XML(cargador.data);

         lista=XmlExterno.children();//Aqui el error 3594 dice que children no es reconocido en XMLList
         total=lista.length();//Aqui el error 3594 método no reconocido de la clase dinamica XMLList
         var foto = new Loader();
         addChild(foto);

         descripcion.text=lista[i].attribute("descripcion");
         fotos.load(new URLRequest(lista[i].attribute("imagen")));
      }

   }
}

En el compilador me aparecen los siguientes errores......:
1046: No se encontró el tipo o no es una constante en tiempo de compilación: Event.
Warning: 3594: children no es un método reconocido de la clase dinámica XML.
Warning: 3594: length no es un método reconocido de la clase dinámica XMLList.

Por fininhop

18 de clabLevel



 

safari
Citar            
MensajeEscrito el 20 Mar 2010 08:29 pm
1046: No se encontró el tipo o no es una constante en tiempo de compilación: Event.

este error sale porque no importaste la clase flash.events.Event;

Warning: 3594: children no es un método reconocido de la clase dinámica XML.

este error sale porque hubo un error en tiempo de compilacion ( siempre me pasa y no encuentro sentido ) (el error de arriba)

Warning: 3594: length no es un método reconocido de la clase dinámica XMLList.

este error supongo que es por el primero tambien

ahora, para cargar un xml desde un .as, tenes que importar los siguientes paquetes:

Código ActionScript :

import flash.net.URLLoader;
import flash.net.URLRequest;

import flash.events.IOErrorEvent;
import flash.events.Event;


ahora cargas el xml de la siguiente manera:

Código ActionScript :

function loadXML ( file:String ) : void
{
     var loader:URLLoader = new URLLoader ( );

     loader.addEventListener ( Event.COMPLETE , com );
     loader.addEventListener ( IOErrorEvent.IO_ERROR , err );

     loader.load ( new URLRequest ( file ) );
}

function com ( event:Event ) : void
{
     var xml:XML = XML ( event.target.data );
     var loader:URLLoader = event.target as URLLoader;

     loader.removeEventListener ( Event.COMPLETE , com );
     loader.removeEventListener ( IOErrorEvent.IO_ERROR , err );

     // tu codigo
}

function err ( event:IOErrorEvent ) : void
{
     var loader:URLLoader = event.target as URLLoader;

     loader.removeEventListener ( Event.COMPLETE , com );
     loader.removeEventListener ( IOErrorEvent.IO_ERROR , err );

     trace ( "error" , event.text );
}

Por voices

43 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Mar 2010 04:33 pm
Voices el xml lo cargo en Noticias.as o en Paginas.as?
Es que no entiendo como hacerlo y cuando dices aquí tu código, a que parte de mi código te refieres?

Gracias de ante mano.....
Saludos.....

Por fininhop

18 de clabLevel



 

safari
Citar            
MensajeEscrito el 22 Mar 2010 01:23 am
intenta agregandole a el archivo de Paginas.as junto a las demas importaciones esta linea:

Código ActionScript :

import flash.events.Event;


a mi entender eso deberia solucionar los 3 errors que te tira el flash

cualquier cosa postea

Por voices

43 de clabLevel



 

chrome

 

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