![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 20
|
class Class1
{
function selectedChannels():Array
{
var flooring:XML = new XML();
flooring.onLoad = function(success)
{
// обработка массива "a"
return(a);
}
flooring.load("bla.xml");
}
}
import Class1; var a:Class1 = new Class1(); var b:Array = new Array(); b = a.selectedChannels(); Мне _etc уже успел объяснить что ActionScript работает асинхронно. Я понимаю почему вышеприведённый код не работает, но я не знаю как эту задачу в итоге реализовать. Желательно конечно изменить класс, а не основной код. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Надо изменить свой собственный подход к решению задачи, а не идти по заранее гиблому пути.
В приведенном варианте задача решения не имеет, такое невозможно во Flash. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 20
|
Цитата:
|
|
|||||
|
Регистрация: Oct 2006
Адрес: https://twitter.com/Eric_Gurt
Сообщений: 393
|
я пробывал грузить сразу 10 хмл в чате, и в результате получались странные коллизии - чиался один файл, а возвращалось содержимое другого.
Я решил эту проблему, запрашивая рнр файл, который склеивал несколько хмл-ек и возвращал результат.
__________________
x << 2; |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Отказаться от синхронности.
Выполнять действия по событиям. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 20
|
Получается, что классы для загрузки данных сделать не получится?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Получится. Используя все ту же событийную модель.
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 20
|
Цитата:
Цитата:
Последний раз редактировалось etc; 01.09.2007 в 12:57. |
|
|||||
|
Регистрация: Sep 2006
Сообщений: 256
|
Цитата:
import mx.events.EventDispatcher;
import mx.utils.Delegate;
class ChannelsDAO
{
private var _xml:XML;
public var addEventListener:Function;
public var removeEventListener:Function;
private var dispatchEvent:Function;
public function ChannelsDAO()
{
EventDispatcher.initialize(this);
}
public function getChannels():Void
{
this._xml = new XML();
this._xml.ignoreWhite = true;
this._xml.onLoad = Delegate.create(this, this.onLoad);
this._xml.load("channels.xml");
}
private function onLoad(success:Boolean)
{
if(success)
{
var result:Array = this.getChannelsFromXML();
//вещаем событие.
//result - полученных данные.
this.dispatchEvent({type:"onResult", result: result})
}else
{
this.dispatchEvent({type:"onFault"})
}
}
private function getChannelsFromXML():Array
{
var channels:Array = []
//здесь извлекаем данные из загруженного xml-документа.
return channels;
}
}
import mx.utils.Delegate;
class ChannelsDAOTest
{
private var _model:Model;
private var _dao:ChannelsDAO;
public function ChannelsDAOTest()
{
}
public function run():Void
{
this._model = new Model();
this._dao = new ChannelsDAO();
this._dao.getChannels();
this._dao.addEventListener("onResult", Delegate.create(this, this.resultHandler));
}
private function resultHandler(event:Object):Void
{
this._model.channels = event.result;
}
}
|
|
|||||
|
Регистрация: Oct 2006
Адрес: https://twitter.com/Eric_Gurt
Сообщений: 393
|
я не пойму, в чем заключается необходимость синхронной загрузки хмл?
__________________
x << 2; |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|