Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как организовать класс возвращающий результат обработки (http://www.flasher.ru/forum/showthread.php?t=137551)

treety 16.03.2010 16:25

Как организовать класс возвращающий результат обработки
 
на форуме даже не знаю как искать
возможно обсуждалось
буду рад ссылкам на соответствующие темы
или ключевым словам для поиска

задача такая
нужно загрузить некий файлик (формат не имеет значения)
с помощью соответствующего класса
в этом же классе произвести какие либо действия
и вернуть результат с подтверждением окончания обработки

как это сделать?

GentleFLASH 16.03.2010 16:32

событиями

Партизан 16.03.2010 16:33

Можно начать здесь читать.

treety 16.03.2010 16:41

Цитата:

Сообщение от Партизан (Сообщение 893479)
Можно начать здесь читать.

спасибо за ёмкий ответ
я знаю что вы все умные =)
...

Добавлено через 3 минуты
Цитата:

Сообщение от GentleFLASH (Сообщение 893478)
событиями

эт да
но мнебы схемку как это организовать

Добавлено через 6 минут
..просто не до конца понимаю принцип работы событий
в том числе что они могут и не могут
а если не могут то как сделать так чтобы они смогли =)

expl 16.03.2010 21:41

Все как всегда зависит от деталей задачи
Начинаем с простого:
- делаем класс задачи Вашему классу:
Код 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 и работаем не с колбеками, а событиями

treety 16.03.2010 21:55

отлично!
спасибо большое!!
на первый взгляд - то что нужно
завтра буду тестить

Добавлено через 19 часов 6 минут
вспоткнулся на этом
немного не понимаю принцыпа
Код AS3:

class Task
{
    public function new(url:String)// <--
                        //1084: Syntax error: expecting identifier before new.
    public function get url():String;// <-- непонятны эти две строка
                        //1084: Syntax error: expecting leftparen before public.
    public var result:ResultType;
    public var callback:Function;
}



Часовой пояс GMT +4, время: 15:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.