Я пытаюсь вызвать внешний API, который возвращает XML, и у меня нет проблем с этим.
Впоследствии я захотел провести рефакторинг своего кода и перенес мой вызов API во внешний класс API.as, но как мне вернуть XML в мой основной класс ??
отл.
класс 1:
package references.campaign
{
import flash.events.Event;
import flash.xml.XMLDocument;
import references.utils.*;
import flash.display.*;
public class myCampaign extends MovieClip
{
public function myCampaign()
{
var api = new API();
trace(api.GetMakes()); //I would like this to show XML output
}
}
}
класс 2:
package references.utils
{
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.xml.XMLDocument;
public class API
{
const ApiKey:String = "ApiKEY=random_gen_key";
const URL:String = "http://api.myURL.com/";
private var _xmlDocument:XMLDocument;
public function API()
{
_xmlDocument = new LoadExternal(URL + ApiKey);
}
public function GetMakes() : XMLDocument
{
return _xmlDocument;
}
}
}
класс 3:
package references.utils
{
import flash.display.Loader;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.xml.XMLDocument;
public class LoadExternal
{
private var _url:String = "";
private var _bytesLoadProgress:int = 0;
private var _loaded:XMLDocument;
public function LoadExternal(url:String = "")
{
if (url != "")
{
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(url));
}
}
public function onComplete(e:Event):void
{
_loaded = new XMLDocument(e.target.data);
trace(_loaded); //This works, but not what i'm after.
this.addChild(_loaded); // something like this????
}
}
}
Надеюсь, это имеет смысл?
Я разработчик .NET, так что для меня это новость с этим программированием, управляемым событиями ..