Comunidad de diseño web y desarrollo en internet online

Retornar datos en as3

Citar            
MensajeEscrito el 31 Ago 2007 12:58 pm
Hola, estoy haciendo unas simples pruebas en as3 para retornar datos, la idea es leer un xml (sin problemas) y pasar el contenido del mismo a una caja de texto, tengo el siguiente xml

Código :

<?xml version="1.0" encoding="iso-8859-1"?>
<menu>
  <elemento>
   <id>1</id>
   <mueble>mesa</mueble>
  </elemento>
  <elemento>
   <id>2</id>
   <mueble>silla</mueble>
  </elemento>
  <elemento>
   <id>3</id>
   <mueble>armario</mueble>
  </elemento>
</menu>


Ahora tengo el siguiente Main

Código :

package
{
   import flash.display.*;
   import Clases.*; 
   public class Main extends Sprite
   {
      private var menuxml:Proyectos = new Proyectos(); 
      private var caja2:cajaTexto = new cajaTexto();
      public function Main()
      {
         addChild(caja2);  
         addChild(menuxml);
         var valor:String = menuxml.cargar_xml();
         caja2.asignar(valor,50,50);
      } 
   }
}


y tengo las siguientes clases

Código :

package Clases
{
   import flash.display.*;
   import flash.events.*;
   import flash.net.*;
   import flash.utils.*;
   import flash.text.*;
   
   public class cajaTexto extends Sprite
   {
      var caja:TextField = new TextField();
      public function asignar(valor:String,pos_x:Number, pos_y:Number)
      {
         caja.autoSize = TextFieldAutoSize.LEFT;
         caja.type = TextFieldType.DYNAMIC;
         caja.htmlText = valor;
         caja.x=pos_x; 
         caja.y=pos_y;
         addChild(caja);   
      }
   }
}

Código :

package Clases
{
   import flash.display.*;
   import flash.events.*;
   import flash.net.*;
   import flash.utils.*;
   
   public class Proyectos extends Sprite
   {
      public function cargar_xml()
      {
       var loader:URLLoader=new URLLoader  ;
       var request:URLRequest=new URLRequest("../xml/menuxml.xml");
       loader.dataFormat=URLLoaderDataFormat.TEXT;
       loader.addEventListener(Event.COMPLETE,xmlcomprobando);
       loader.load(request);
            }
   private function xmlcomprobando(event:Event):void
   {
       try
       {
         var mixml:XML=new XML(event.target.data);
         parseando2(mixml); 
       } 
       catch (e:TypeError) 
       {
         trace("No se pudo parsear el XML");
         trace(e.message);
       }
   }
   public function parseando2(mixml2:XML):void
   {
      var elementoList:XMLList = mixml2.children();
      var cadena2:String="";
      for each (var informacion:XML in elementoList) 
      {
         var cadena:String = ("_______"+"\n"+informacion.children().text()[0]+"\n"+informacion.children().text()[1]+"\n");
         cadena2+=cadena;
      }
      return cadena2;
      }
   }
}


Solo quiero imprimir en la caja de texto que he creado el contenido del xml, el problema esta en que no se como retorna el valor de cadena2, ya sea con un variable global, o bien haciendo diferentes return, ...; si hacemos un trace de cadena2, todo es correcto, solo necesito pasar el valor.

Gracias, esto no debe de ser demasiado complicado...
Saludos,

Por ochio

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ago 2007 11:36 pm
Tu principal fallo es que cargar_xml no es una función recursiva te devuelva ningún valor

Código :

var valor:String = menuxml.cargar_xml();


Prueba así:

Código :

package {
   import flash.display.*;
   import flash.events.*;

   public class Main extends Sprite {
      private var menuxml:Proyectos;
      private var caja:cajaTexto;

      public function Main() {
         menuxml = new Proyectos(menuxmlComplete);
      }
      public function menuxmlComplete() {
         trace("menuxml cargado");
         var valor:String = menuxml.parseado;
         caja = new cajaTexto(this,valor,50,50);
      }
   }
}

Código :

package {
   import flash.display.*;
   import flash.events.*;
   import flash.net.*;
   import flash.utils.*;

   public class Proyectos extends Sprite {
      private var _parseado:String;
      private var onComplete:Function;
      public function Proyectos(funcion:Function) {
         var loader:URLLoader=new URLLoader;
         var request:URLRequest=new URLRequest("menuxml.xml");
         loader.dataFormat=URLLoaderDataFormat.TEXT;
         loader.addEventListener(Event.COMPLETE, parseando);
         loader.load(request);
         onComplete = funcion;
      }
      private function parseando(event:Event):void {
         try {
            var mixml:XML=new XML(event.target.data);
            _parseado = parseando2(mixml);
         } catch (e:TypeError) {
            _parseado = "No se pudo parsear el XML";
         }
         onComplete();
      }
      private function parseando2(mixml2:XML):String {
         var elementoList:XMLList=mixml2.children();
         for each (var informacion:XML in elementoList) {
            var cadena:String="_______" + "\n" + informacion.children().text()[0] + "\n" + informacion.children().text()[1] + "\n";
         }
         return cadena;
      }
      public function get parseado():String {
         return _parseado;
      }
   }
}

Código :

package {
   import flash.display.*;
   import flash.events.*;
   import flash.net.*;
   import flash.utils.*;
   import flash.text.*;

   public class cajaTexto extends Sprite {
      var caja:TextField=new TextField();
      public function cajaTexto(target:Sprite,valor:String,pos_x:Number,pos_y:Number) {
         caja.autoSize=TextFieldAutoSize.LEFT;
         caja.type=TextFieldType.DYNAMIC;
         caja.htmlText=valor;
         caja.x=pos_x;
         caja.y=pos_y;
         target.addChild(caja);
      }
   }
}

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

 

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