Показать сообщение отдельно
Старый 16.03.2010, 21:41
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 5  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Все как всегда зависит от деталей задачи
Начинаем с простого:
- делаем класс задачи Вашему классу:
Код AS3:
class Task
{
     public function new(url:String)// Урл чего Вы там грузите и может еще некоторые нужные данные для обработки запроса
     public function get url():String;
     public var result:ResultType;//Какого там типа результат нужно получить
     pulbic var callback:Function;
}
Делаем обработчик (это тот самый класс, про который спрашиваете как организовать), для начала покатит статический:

Код AS3:
class TaskExecutor
{
     private static var _task:Task;
     public static function execute(task:Task)
     {
          _task = task;
           ....
           //запускаем асинхронные процесы - загрузку и т.д. и т.п.
           _loader.load(new UrlRequest(task.url))
            ....
      }
 
      private static function onLoad(event:Event):void
      {
              //все что надо загрузили, результат получили, делаем так:
             _task.result = result;
             _task.callback(task);
      }
}
Как использовать:

Код AS3:
    var task = new Task('мой URL');
    task.callback = onComplete;
    TaskExecutor.execute(task);
 
private function onComplete(task:Task):void
{
     var reslut = task.result// Ура! Мы дождались результата!
}
Ну а дальше, если потребуется обрабатывать несколько запросов - организуем очередь, потом очередь с приоритетом, обработку ошибок и т.д. и т.п.

И да, если о завершении обработки задания должно быть оповещено несколько объектов - наследуем Task от EventDispatcher и работаем не с колбеками, а событиями


Последний раз редактировалось expl; 16.03.2010 в 21:47.