Re: [Flashcoders] how to return in this function

2008-01-30 Thread Leonardo Scattola - New Vision srl

Claudio M. E. Bastos Iorio ha scritto:

Hi guys, hope you can help me on this one.

I have a class to load an XML file. I'm trying this:
  

As Eric said, remember that the Event class is your friend.

You will want to manage any asynchronous procedure (such as Remoting, 
XML parsing, NetConnection responders and millions of other features) 
by launching and listening to a couple of Events.

___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


RE: [Flashcoders] how to return in this function

2008-01-30 Thread Claudio M. E. Bastos Iorio
Thank you guys, now I have a clearer point of view. Your responses and this
thread http://www.actionscript.org/forums/showthread.php3?t=159167 helped me
a lot. Have a nice day!



Claudio M. E. Bastos Iorio
http://www.blumer.com.ar

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Juan Pablo
Califano
Sent: Tuesday, January 29, 2008 10:37 PM
To: Flash Coders List
Subject: Re: [Flashcoders] how to return in this function

  var mivariable:retornaXML = new retornaXML();
  trace(mivariable.elXML);
  but this trace returns null, since the xml file (I think) is not loaded
  yet.

Yes, that's the problem. In Flash, xml loading is always asynchronous so the

trace line is executed immediately after the previous one, in which you 
created an instance of retornaXML; so the XML object isn't at that point 
loaded and parsed. (It would perhaps be nice to have the option of loading 
synchronously, but I digress...).

So, you'll have to listen to the COMPLETE event dispatched by the URLLoader 
and then access the xml object.

You can wrap your xml and the loading logic in a custom class as you seem to

be doing so far, but if you're just going to load the xml and the read it / 
parse it somewhere else (outside that class), in my humble opinion, the 
wrapper is pointless.

You'll end up re-dispatching the Loader events (all the events you want to 
support; the error events, and the complete event, at least, just in case 
something went wrong, and perhaps the Progress event as well) so your 
external code can handle the different scenarios. By the time you are done 
coding that, you'll find that you have a class that does almost nothing of 
use by itself; it just copies all the functionality that you already had in 
the URLLoader and XML classes out of the box. I did it a couple of times 
when I started to use AS 3.0, but I changed my approach as it didn't make 
much sense to me to have such a class. Having all that logic encapsulated in

the class that actually does something with the xml, on the other hand, 
seems like a good idea to me.

Cheers
Juan Pablo Califano

- Original Message - 
From: Hans Wichman [EMAIL PROTECTED]
To: Flash Coders List flashcoders@chattyfig.figleaf.com
Sent: Tuesday, January 29, 2008 7:30 PM
Subject: Re: [Flashcoders] how to return in this function


 seems like an item for the newbie list tbh:)

 On Tue, Jan 29, 2008 at 8:27 PM, Claudio M. E. Bastos Iorio 
 [EMAIL PROTECTED] wrote:

 Thanks for your answer. But how? Where?. I think that
 ProgressEvent.bytesLoaded, and ProgressEvent.bytesTotal could help. But
 where should I check the status?

 
 Claudio M. E. Bastos Iorio
 http://www.blumer.com.ar

  -Original Message-
 From: [EMAIL PROTECTED] [mailto:
 [EMAIL PROTECTED] On Behalf Of eric e. dolecki
 Sent: Tuesday, January 29, 2008 4:07 PM
 To: Flash Coders List
 Subject: Re: [Flashcoders] how to return in this function

 you could use an event to listen to, to pass the XML out of the class.

 On Jan 29, 2008 1:42 PM, Claudio M. E. Bastos Iorio 
 [EMAIL PROTECTED]
 
 wrote:

  Hi guys, hope you can help me on this one.
 
  I have a class to load an XML file. I'm trying this:
 
 
 
 
  package {
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.*;
public class retornaXML{
   private var _xml:XML;
   public function retornaXML() {
  cargarXML();
   }
 
   private function cargarXML():void {
  var loader:URLLoader = new URLLoader();
  loader.addEventListener(Event.COMPLETE, xmlLoaded);
  loader.load(new URLRequest(LocalData.xml));
   }
   private function xmlLoaded(e:Event):void {
  _xml = new XML(e.target.data);
  trace(_xml);
  //THE TRACE HERE WORKS PERFECT AND RETURNS THE XML
 
   }
   public function get elXML():XML {
  return _xml;
  //THIS RETURNS null
   }
 
}
  }
 
 
 
  I want something like this:
 
 
 
  var mivariable:retornaXML = new retornaXML();
  trace(mivariable.elXML);
 
 
 
  but this trace returns null, since the xml file (I think) is not loaded
  yet.
  What should I do?
 
 
 
  Thanks in advance.
 
  
 
  Claudio M. E. Bastos Iorio
 
   http://www.blumer.com.ar/ http://www.blumer.com.ar
 
 
 
  ___
  Flashcoders mailing list
  Flashcoders@chattyfig.figleaf.com
  http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
 
 ___
 Flashcoders mailing list
 Flashcoders@chattyfig.figleaf.com
 http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


 ___
 Flashcoders mailing list
 Flashcoders@chattyfig.figleaf.com
 http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

RE: [Flashcoders] how to return in this function

2008-01-29 Thread Claudio M. E. Bastos Iorio
Thanks for your answer. But how? Where?. I think that 
ProgressEvent.bytesLoaded, and ProgressEvent.bytesTotal could help. But where 
should I check the status? 


Claudio M. E. Bastos Iorio
http://www.blumer.com.ar

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of eric e. dolecki
Sent: Tuesday, January 29, 2008 4:07 PM
To: Flash Coders List
Subject: Re: [Flashcoders] how to return in this function

you could use an event to listen to, to pass the XML out of the class.

On Jan 29, 2008 1:42 PM, Claudio M. E. Bastos Iorio [EMAIL PROTECTED]
wrote:

 Hi guys, hope you can help me on this one.

 I have a class to load an XML file. I'm trying this:




 package {
   import flash.net.URLRequest;
   import flash.net.URLLoader;
   import flash.events.*;
   public class retornaXML{
  private var _xml:XML;
  public function retornaXML() {
 cargarXML();
  }

  private function cargarXML():void {
 var loader:URLLoader = new URLLoader();
 loader.addEventListener(Event.COMPLETE, xmlLoaded);
 loader.load(new URLRequest(LocalData.xml));
  }
  private function xmlLoaded(e:Event):void {
 _xml = new XML(e.target.data);
 trace(_xml);
 //THE TRACE HERE WORKS PERFECT AND RETURNS THE XML

  }
  public function get elXML():XML {
 return _xml;
 //THIS RETURNS null
  }

   }
 }



 I want something like this:



 var mivariable:retornaXML = new retornaXML();
 trace(mivariable.elXML);



 but this trace returns null, since the xml file (I think) is not loaded
 yet.
 What should I do?



 Thanks in advance.

 

 Claudio M. E. Bastos Iorio

  http://www.blumer.com.ar/ http://www.blumer.com.ar



 ___
 Flashcoders mailing list
 Flashcoders@chattyfig.figleaf.com
 http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


Re: [Flashcoders] how to return in this function

2008-01-29 Thread eric e. dolecki
you could use an event to listen to, to pass the XML out of the class.

On Jan 29, 2008 1:42 PM, Claudio M. E. Bastos Iorio [EMAIL PROTECTED]
wrote:

 Hi guys, hope you can help me on this one.

 I have a class to load an XML file. I'm trying this:




 package {
   import flash.net.URLRequest;
   import flash.net.URLLoader;
   import flash.events.*;
   public class retornaXML{
  private var _xml:XML;
  public function retornaXML() {
 cargarXML();
  }

  private function cargarXML():void {
 var loader:URLLoader = new URLLoader();
 loader.addEventListener(Event.COMPLETE, xmlLoaded);
 loader.load(new URLRequest(LocalData.xml));
  }
  private function xmlLoaded(e:Event):void {
 _xml = new XML(e.target.data);
 trace(_xml);
 //THE TRACE HERE WORKS PERFECT AND RETURNS THE XML

  }
  public function get elXML():XML {
 return _xml;
 //THIS RETURNS null
  }

   }
 }



 I want something like this:



 var mivariable:retornaXML = new retornaXML();
 trace(mivariable.elXML);



 but this trace returns null, since the xml file (I think) is not loaded
 yet.
 What should I do?



 Thanks in advance.

 

 Claudio M. E. Bastos Iorio

  http://www.blumer.com.ar/ http://www.blumer.com.ar



 ___
 Flashcoders mailing list
 Flashcoders@chattyfig.figleaf.com
 http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


Re: [Flashcoders] how to return in this function

2008-01-29 Thread Hans Wichman
seems like an item for the newbie list tbh:)

On Tue, Jan 29, 2008 at 8:27 PM, Claudio M. E. Bastos Iorio 
[EMAIL PROTECTED] wrote:

 Thanks for your answer. But how? Where?. I think that
 ProgressEvent.bytesLoaded, and ProgressEvent.bytesTotal could help. But
 where should I check the status?

 
 Claudio M. E. Bastos Iorio
 http://www.blumer.com.ar

  -Original Message-
 From: [EMAIL PROTECTED] [mailto:
 [EMAIL PROTECTED] On Behalf Of eric e. dolecki
 Sent: Tuesday, January 29, 2008 4:07 PM
 To: Flash Coders List
 Subject: Re: [Flashcoders] how to return in this function

 you could use an event to listen to, to pass the XML out of the class.

 On Jan 29, 2008 1:42 PM, Claudio M. E. Bastos Iorio [EMAIL PROTECTED]
 
 wrote:

  Hi guys, hope you can help me on this one.
 
  I have a class to load an XML file. I'm trying this:
 
 
 
 
  package {
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.*;
public class retornaXML{
   private var _xml:XML;
   public function retornaXML() {
  cargarXML();
   }
 
   private function cargarXML():void {
  var loader:URLLoader = new URLLoader();
  loader.addEventListener(Event.COMPLETE, xmlLoaded);
  loader.load(new URLRequest(LocalData.xml));
   }
   private function xmlLoaded(e:Event):void {
  _xml = new XML(e.target.data);
  trace(_xml);
  //THE TRACE HERE WORKS PERFECT AND RETURNS THE XML
 
   }
   public function get elXML():XML {
  return _xml;
  //THIS RETURNS null
   }
 
}
  }
 
 
 
  I want something like this:
 
 
 
  var mivariable:retornaXML = new retornaXML();
  trace(mivariable.elXML);
 
 
 
  but this trace returns null, since the xml file (I think) is not loaded
  yet.
  What should I do?
 
 
 
  Thanks in advance.
 
  
 
  Claudio M. E. Bastos Iorio
 
   http://www.blumer.com.ar/ http://www.blumer.com.ar
 
 
 
  ___
  Flashcoders mailing list
  Flashcoders@chattyfig.figleaf.com
  http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
 
 ___
 Flashcoders mailing list
 Flashcoders@chattyfig.figleaf.com
 http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


 ___
 Flashcoders mailing list
 Flashcoders@chattyfig.figleaf.com
 http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


Re: [Flashcoders] how to return in this function

2008-01-29 Thread Juan Pablo Califano

 var mivariable:retornaXML = new retornaXML();
 trace(mivariable.elXML);
 but this trace returns null, since the xml file (I think) is not loaded
 yet.


Yes, that's the problem. In Flash, xml loading is always asynchronous so the 
trace line is executed immediately after the previous one, in which you 
created an instance of retornaXML; so the XML object isn't at that point 
loaded and parsed. (It would perhaps be nice to have the option of loading 
synchronously, but I digress...).


So, you'll have to listen to the COMPLETE event dispatched by the URLLoader 
and then access the xml object.


You can wrap your xml and the loading logic in a custom class as you seem to 
be doing so far, but if you're just going to load the xml and the read it / 
parse it somewhere else (outside that class), in my humble opinion, the 
wrapper is pointless.


You'll end up re-dispatching the Loader events (all the events you want to 
support; the error events, and the complete event, at least, just in case 
something went wrong, and perhaps the Progress event as well) so your 
external code can handle the different scenarios. By the time you are done 
coding that, you'll find that you have a class that does almost nothing of 
use by itself; it just copies all the functionality that you already had in 
the URLLoader and XML classes out of the box. I did it a couple of times 
when I started to use AS 3.0, but I changed my approach as it didn't make 
much sense to me to have such a class. Having all that logic encapsulated in 
the class that actually does something with the xml, on the other hand, 
seems like a good idea to me.


Cheers
Juan Pablo Califano

- Original Message - 
From: Hans Wichman [EMAIL PROTECTED]

To: Flash Coders List flashcoders@chattyfig.figleaf.com
Sent: Tuesday, January 29, 2008 7:30 PM
Subject: Re: [Flashcoders] how to return in this function



seems like an item for the newbie list tbh:)

On Tue, Jan 29, 2008 at 8:27 PM, Claudio M. E. Bastos Iorio 
[EMAIL PROTECTED] wrote:


Thanks for your answer. But how? Where?. I think that
ProgressEvent.bytesLoaded, and ProgressEvent.bytesTotal could help. But
where should I check the status?


Claudio M. E. Bastos Iorio
http://www.blumer.com.ar

 -Original Message-
From: [EMAIL PROTECTED] [mailto:
[EMAIL PROTECTED] On Behalf Of eric e. dolecki
Sent: Tuesday, January 29, 2008 4:07 PM
To: Flash Coders List
Subject: Re: [Flashcoders] how to return in this function

you could use an event to listen to, to pass the XML out of the class.

On Jan 29, 2008 1:42 PM, Claudio M. E. Bastos Iorio 
[EMAIL PROTECTED]


wrote:

 Hi guys, hope you can help me on this one.

 I have a class to load an XML file. I'm trying this:




 package {
   import flash.net.URLRequest;
   import flash.net.URLLoader;
   import flash.events.*;
   public class retornaXML{
  private var _xml:XML;
  public function retornaXML() {
 cargarXML();
  }

  private function cargarXML():void {
 var loader:URLLoader = new URLLoader();
 loader.addEventListener(Event.COMPLETE, xmlLoaded);
 loader.load(new URLRequest(LocalData.xml));
  }
  private function xmlLoaded(e:Event):void {
 _xml = new XML(e.target.data);
 trace(_xml);
 //THE TRACE HERE WORKS PERFECT AND RETURNS THE XML

  }
  public function get elXML():XML {
 return _xml;
 //THIS RETURNS null
  }

   }
 }



 I want something like this:



 var mivariable:retornaXML = new retornaXML();
 trace(mivariable.elXML);



 but this trace returns null, since the xml file (I think) is not loaded
 yet.
 What should I do?



 Thanks in advance.

 

 Claudio M. E. Bastos Iorio

  http://www.blumer.com.ar/ http://www.blumer.com.ar



 ___
 Flashcoders mailing list
 Flashcoders@chattyfig.figleaf.com
 http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders 


___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders