>From your cssLoaded and xmlLoaded methods, dispatch an event each,
announcing the completion of load.
eg
public function xmlLoaded(event:Event):void {
newXML = XML(event.target.data);
dispatchEvent(new Event("xmlLoaded"));
}
And on the timeline, you can add a listener to that event by doing this:
var fileForThis:fileImports = new
fileImports("courseInfo.xml","styles.css");
fileForThis.addEventListener("xmlLoaded", onXMLLoad);
function onXMLLoad()
{
// xml loaded now
}
Of course thats not the best way to code ( you could create a custom event
object to pass more data etc, ) but the above should get you started.
Btw, your 'fileImports' class doesnt seem to be a UI class, so you dont have
to extend it from Sprite. Just extend EventDispatcher class.
~Arul Prasad.
On 9/12/07, Dane Williams <[EMAIL PROTECTED]> wrote:
>
> Greetings All,
> I'm trying to do more and more of my projects with external classes and,
> along with that, creating classes for routines that I regularly do. I have
> a
> class that reads an XML file and CSS file once it's called. It has worked
> fine for the first few projects I used it in. With my recent project, it's
> not wanted to behave. The code for the class is as follows:
> package {
> import flash.display.Sprite;
> import flash.text.StyleSheet;
> import flash.events.*;
> import flash.net.*;
> public class fileImports extends Sprite {
> public var newStyleSheet:StyleSheet = new StyleSheet();
> public var newXML:XML = new XML();
> public function fileImports(xmlFile:String, cssFile:String):void {
> //load css file
> var cssToLoad:URLRequest=new URLRequest(cssFile);
> var cssLoader:URLLoader = new URLLoader;
> cssLoader.load(cssToLoad);
> //load xml file
> var xmlToLoad:URLRequest=new URLRequest(xmlFile);
> var xmlLoader:URLLoader = new URLLoader;;
> xmlLoader.load(xmlToLoad);
> //event listeners
> xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);
> cssLoader.addEventListener(Event.COMPLETE, cssLoaded);
> }
> public function cssLoaded(event:Event):void {
> newStyleSheet.parseCSS(event.target.data);
> }
> public function xmlLoaded(event:Event):void {
> newXML = XML(event.target.data);
> }
> }
> }
>
> I am creating an instance on my main timeline with this:
> var fileForThis:fileImports = new
> fileImports("courseInfo.xml","styles.css");
>
> I am trying to use the data that is coming in with the XML file to
> populate
> some combo boxes. My problem is I don't know how to "listen" to the class
> from the main timeline to find out if the class is finished processing the
> XML. Right now if I try to use "fileForThis.newXML" I get a value of null.
> But if I put a trace on newXML in the class, it shows the content of my
> XML
> file.
>
> I have gotten this to work on other projects because I haven't tried to
> use
> the data immediately - so the data has time to "process" before it's put
> into a text field, etc.
>
> I appreciate any help I can get on this. Thanks!
>
>
> D. Dane Williams
> The Learning Center
> Buckman Laboratories, International
> 901-272-6774
>
>
> _______________________________________________
> [email protected]
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com
>
--
Arul Prasad
http://arulprasad.blogspot.com
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com