Показать сообщение отдельно
Старый 01.09.2007, 02:03
lowka вне форума Посмотреть профиль Отправить личное сообщение для lowka Найти все сообщения от lowka
  № 12  
Ответить с цитированием
lowka

Регистрация: Sep 2006
Сообщений: 256
Цитата:
Сообщение от 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;
	}
}