Цитата:
|
Сообщение от milDude
... но как это можно инкапсулировать в класс?
|
Подойдет?

Код:
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;
}
}