I'm trying to return XML from an event complete back to the main function, but can't figure out how to do it.
Here's the functions I'm calling:
Main File:
public var mySendAndLoad:SendAndLoad = new SendAndLoad();
mySendAndLoad.sendData(url,variables)
The mySendAndLoad class:
package
{
import flash.events.*;
import flash.net.*;
import flash.xml.XMLDocument;
public class SendAndLoad
{
public var xml:XML = new XML();
public var xmlList:XMLList;
public function SendAndLoad()
{
}
public function sendData(url:String, _vars:URLVariables):String
{
var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
request.data = _vars;
request.method = URLRequestMethod.POST;
loader.addEventListener(Event.COMPLETE, handleComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.load(request);
}
private function handleComplete(event:Event):String
{
var loader:URLLoader = URLLoader(event.target);
xml = XML(loader.data);
xmlList = xml.children();
return(xmlList[1]);
}
private function onIOError(event:IOErrorEvent):void
{
trace("Error loading URL.");
}
}
}
What I want to happen is have the xmlList come back to the main file. But since it isn't in the event I called (sendData) it doesn't get brought back.
Any ideas?
package
{
import flash.events.*;
import flash.net.*;
import flash.xml.XMLDocument;
//THIS CLASS EXTENDS EVENTDISPATCHER SO IT CAN DISPATCH EVENTS
public class SendAndLoad extends EventDispatcher
{
public var xml:XML = new XML();
public var xmlList:XMLList;
public function SendAndLoad()
{
super(null);
}
public function sendData(url:String, _vars:URLVariables):void
{
var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
request.data = _vars;
request.method = URLRequestMethod.POST;
loader.addEventListener(Event.COMPLETE, handleComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.load(request);
}
private function handleComplete(event:Event):void
{
var loader:URLLoader = URLLoader(event.target);
xml = XML(loader.data);
xmlList = xml.children();
//NEW CODE
var evt:Event=new Event(Event.COMPLETE);
dispatchEvent(evt);
//return(xmlList[1]);
}
private function onIOError(event:IOErrorEvent):void
{
trace("Error loading URL.");
}
}
}
and in the main file
public var mySendAndLoad:SendAndLoad = new SendAndLoad();
mySendAndLoad.addEventListener(Event.COMPLETE, xmlLoadCompleted);
mySendAndLoad.sendData(url,variables)
private function xmlLoadCompleted(e:Event):void {
var childToUse:XML=mySendAndLoad.xmlList[1];
//whatever else you want to do
}