|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
Как вернуть XML сразу после загрузки
есть класс XmlLoader
в нем функция public function getXmlData(var1:String,var2:String):void { var date = new Date(); var req:URLRequest = new URLRequest("xml_path"); var sendVariables:URLVariables = new URLVariables(); req.method = URLRequestMethod.GET; sendVariables.var1 = var1; sendVariables.var2 = var2; sendVariables.date = date; req.data = sendVariables; loader.load(req); loader.addEventListener(Event.COMPLETE, xmlLoaded); function xmlLoaded(event:Event):void { if(event.target as URLLoader !=null){ this.xml = new XML (event.target.data);//вот этот xml нужно вернуть } dispatchEvent(new Event(Event.COMPLETE)); } } public function Main() { var xmlLoader:XmlLoader = new XmlLoader(); //тут хотелось бы получить нечто следующее //тоесть чтобы класс XmlLoader возвращал xml по введенным параметрам var xml:XML = xmlLoader.getXmlData("var1Value","var2Value"); } public function Main() { var xmlLoader:XmlLoader = new XmlLoader(); xmlLoader.addEventListener(Event.COMLETE,onComplete) } function onComplete(event:Event):void { var xml:XML = xmlLoader.getXml(); // возвращает переменную xml из класса XmlLoader //дальше уже что-нибудь делаю с XML } |
|
|||||
Так сделать не получится, так как загрузка происходит асинхронно.
__________________
http://www.chessmax.ru |
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
то есть только диспатчить onComplete, и по нему вытаскивать из xmlLoader-a переменную с XML?
|
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
Не диспатчить, а слушать Event.COMPLETE. Но вообще да, это же асинхронная модель.
|
|
|||||
Моно вместо функции вызова написать обертку с таймером, который через определенные интервалы будет проверять, не загрузился ли xml, и когда он загрузится, запишет указатель. Но это получатся костыли, листенер принципиально делает тоже самое, но проще и удобнее.
__________________
interplanety |
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
листенер конечно хорошо, но при этом , в каждом классе, который должен создать экземпляр загрузчика
нужно делать такую конструкцию: должен быть унаверсальней подход, чтобы не писать один и тот же код много раз, а разместить как-нибудь этот код в классе-загрузчике. |
|
|||||
Цитата:
public function loadPic (path:String, callBack:Function):void { var loader:Loader = new Loader (); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, callBack); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, securityErrorHandler); loader.load(new URLRequest(path)); } где makePreviewPic - коллбек, который обрабатывает и размещает полученное изображение. Способов проще и удобней я не придумал :-) |
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
спасибо, это как раз то что нужно.
А можете еще написать пример коллбэк функции? что-то вроде такого? |
|
|||||
А еще XmlLoader можно переименовать в XMLDataManager и сделать синглтоном, и тогда можно будет слушать события одного экземпляра во всех классах которые подписаны.
Идея с callback тоже неплоха
__________________
adobe AS3 manual |
|
|||||
Isfet, да все верно вы написали, только присваивать полученные данные локальной переменной бессмысленно, и .getLoadedXml() лишнее
так как то |
Часовой пояс GMT +4, время: 15:42. |
|
« Предыдущая тема | Следующая тема » |
|
|