Показать сообщение отдельно
Старый 11.07.2017, 22:50
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 1  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Question Один загрузчик для текста и картинок

Всем привет.
Хочу написать класс, который смог бы загружать JSON и картинки JPG, PNG. Подскажите пожалуйста, как бы это правильней реализовать? Готовые решения типа менеджеров загрузки не интересуют.

Как я полагаю, при окончании загрузки мне полученные данные нужно складывать в какой-нибудь контейнер data:* и оттуда забирать по окончанию события? Как правильнее сделать, т.к. загружаемые данные разных типов... И Loader не сможет забирать, если будут приходить текстовые данные - получается мне перед этим нужно проверять расширение файла?

Так вот начал:
Код AS3:
package
{
	import flash.display.Loader;
	import flash.events.Event;
	import flash.events.HTTPStatusEvent;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.system.LoaderContext;
 
	public class MainLoader
	{
		private var _urlLoader:URLLoader;
		private var _loader:Loader;
		public var data:*;
 
		public function MainLoader(url:String)
		{
			_urlLoader = new URLLoader();
			_urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
			_urlLoader.addEventListener(Event.COMPLETE, onBinaryLoadCompleteHandler);
			_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onBinaryIOErrorHandler);
			_urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onBinaryHTTPStatusHandler);
			_urlLoader.load(new URLRequest(url));
		}
 
		private function onBinaryHTTPStatusHandler(e:HTTPStatusEvent):void
		{
		}
 
		private function onBinaryIOErrorHandler(e:IOErrorEvent):void
		{
		}
 
		private function onBinaryLoadCompleteHandler(e:Event):void
		{
			_loader = new Loader();
			var context:LoaderContext = new LoaderContext();
			context.allowCodeImport = true;
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadCompleteHandler);
			_loader.loadBytes(e.currentTarget.data, context);
		}
 
		private function onLoadCompleteHandler(e:Event):void
		{
			trace('COMPLETE!');
		}
	}
}
__________________
кто не отвечает, того garbage collector забирает