![]() |
Диспатч события, единичный вариант?
Всем привет. Вот задался таким вопросом. К примеру у нас есть класс, который загружает инфу с сервера. Создадим 6 таких классов на сцене(соответственно с разными параметрами в конструкторе). Если через for все эти классы инициализировать, они начинают загрузку, как только вызван конструктор данного класса. Вопрос заключается в следующем. Загрузка будет происходить сразу же у всех классов после их инициализации, независимо от того, была ли загружена инфа с предыдущего класса или нет, который сделал запрос на сервер. Но из представленных вариантов, мы можем просто тупо продиспатчить всё это дело и добавить слушатель к каждому экземпляру. Соответственно, что это получается, к каждому экземпляру, присваивается слушатель? То есть 6 addEventListener в моем случае. Можно прицепить один слушатель, ко всем классам, но тогда нужно задать текущее состояние загрузки, типо 0/6 1/6 2/6 и по достижению загрузки всех экзепляров, работа происходит дальше. Но я не вижу в этом удобства. Есть ли иной вариант? Например просто добавить типо
Код AS3:
|
зачем тебе именно последовательная загрузка? начинать ее в конструкторе где есть какая-то еще логика, кроме самой загрузки - решенее сомнительное. почему все таки решил писать свой лоадер, а не брать готовый? если нужна цепочка загрузок, зачем делать через события, а не через хендлер onComplete?
|
faraday
Цитата:
Цитата:
Добавлено через 15 минут Конечно, можно сразу прогрузить все данные, картинки, файлы и т.п вещи и потом цеплять/клонировать, но, это займет неопределенное количество времени, если файлов много и сразу их прогружать, в некоторых случаях система может тупо зависнуть, поэтому загружать их нужно по мере необходимости, а не все сразу. Отсюда получается, что надо в любом случае ловить хендлер у каждого нового объекта. |
если решать задачу в лоб, то меняй события, на методы инициализации класса, с ними работать проще
Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
Хм. Ну да, вариант выглядит не очень красиво, массивы создавать с функциями, это аналогично созданию хранилища для необходимых объектов и отправлять их в один загрузчик на загрузку и подписать на загрузку всех данных из массива, один комплит хэндлер, после которого уже идет работа с данными, которые нужны в данный момент, ну и соответственно все эти данные куда-нибудь поместить, чтобы дергать оттуда и повторно не прогружать. Просто думал, может есть варианты, без лишних хэндлеров при помощи дефолтных методов as3
Да, архитектура у меня наверно далеко не самая лучшая, постепенно дорабатываю, вроде сейчас удобная, а потом понимаешь, что накосячил и можно сделать гораздо проще и лучше. В этом деле я еще пока копаюсь)) Хорошую схему можно использовать для многочисленных проектов, меняя только назначение компонентов, вопрос, как бы эту схему построить деликатней, но это уже вопрос времени и желания. |
В отличии от Java, нет возможности взаимодействовать с чем то синхронно (кроме FileStream, ExternalInterface.call), это сделано оправданно так как все вызовы выполняются в Main потоке и Flash заставляет этот Main поток разгружать событийной моделью.
В архитектурном плане обработка последовательности решается просто, нужно сделать некую абстракцию вида Task/Job/Runnable как Java мире |
| Часовой пояс GMT +4, время: 17:12. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.