![]() |
Один загрузчик для текста и картинок
Всем привет.
Хочу написать класс, который смог бы загружать JSON и картинки JPG, PNG. Подскажите пожалуйста, как бы это правильней реализовать? Готовые решения типа менеджеров загрузки не интересуют. Как я полагаю, при окончании загрузки мне полученные данные нужно складывать в какой-нибудь контейнер data:* и оттуда забирать по окончанию события? Как правильнее сделать, т.к. загружаемые данные разных типов... И Loader не сможет забирать, если будут приходить текстовые данные - получается мне перед этим нужно проверять расширение файла? Так вот начал: Код AS3:
|
Вариантов как это сделать много. Если вас не интересуют готовые решения, то хотя бы посмотрите на гитхабе как они работают.
|
Цитата:
https://github.com/Gamua/Starling-Fr...ssetManager.as |
Потому что хочу разобраться. Да и задача стоит не сложная. Сейчас в моем приложении работают и URLLoader для загрузки JSON. И Loader для подгрузки картинок. И просто хочу вынести их в отдельный класс. Не хочу использовать менеджер с кучей лишнего функционала. Да и свой класс мне всегда проще усовершенствовать либо найти ошибку.
Поэтому столкнулся с этими вопросами: 1) как определить тип получаемого файла? По первым битам, HTTP заголовки? Могу конечно просто в MainLoader передавать некий идентификатор, что сейчас вот гружу картинку, а сейчас json.. Но считаю правильней было бы, если загрузчик сам определял тип 2) каким образом класс должен отдавать данные разного типа, если это может быть картинка либо json ? |
Цитата:
Цитата:
Код AS3:
|
Цитата:
Вот к примеру (это класс из утилит Dragon Bones), как можно отпределить типы картинок и zip. Мне нужен был зип, и я добавил туда байты зипа из спецификации. То же самое можно сделать и для других типов файлов. Достаточно найти спецификацию типа и посмотреть что у него пишется в хэдэр. Код AS3:
Профит. п.с. Но самый простой способ определить - это просто использовать расширение. |
Цитата:
За пример спасибо! Поэксперементирую :) А вот как распознать json, xml ?.. это ведь текстовые файлы. Полагаю, тут скрипт должен анализировать структуру.. Либо парсером проходить - если ошибки нет, то формат верный. Но, думается, этот вариант не очень хороший. |
Цитата:
а вообще знание о том что это за файл есть из контекста использования, странно предполагать что получив json ты попытаешься засунуть его в Bitmap. передавай загрузчику url и тип того что ты хочешь получить, излишняя адаптивность багоемка. В идеале нужно абстрагировать контент от менеджера загрузок, использовать один менеджер который всегда загружает байты(URLLoader) и отдает их абстрактному контенту/интерфейсу(IContent), где конкретный контент инстанцирован тобой(в нужном/ожидаемом контексте) и этот конкретный контент(PNGContent,JSONContent,XMLContent,SoundContent) уже решает(и знает) что с байтами делать, если text/json/xml readUTFBytes, если картинка Loader.loadBytes. итого поверх этого проще запилить кэширование, пулинг, сохранение в SharedObject и в памяти будет меньше весить при неиспользуемом состоянии и это все при глобальном контроле загрузок(очередь по приоритетам, ограничение по одновременной загрузке, отмена загрузок) |
| Часовой пояс GMT +4, время: 03:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.