|
|
|||||
HTTPStatusEvent
Всем привет.
В классе есть методы, которые грузят json, картинки.. Еще будет загрузка и видео... Мне необходимо отлавливать HTTPStatus при загрузке каждого. Как лучше написать один общий HTTPStatus для всех? Например для экземпляра класса Loader я использую свойство name, по которому потом могу определить, что данный loader загружал. Но для URLLoader такое свойство использовать нельзя. Для наглядности: private function loadJson():void { var loader:URLLoader = new URLLoader; loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHttpStatusHandler); loader.load(new URLRequest('http://...')); } private function loadAvatar():void { var loader = new Loader(); loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHttpStatusHandler); loader.name = 'loaderAvatar'; loader.load(new URLRequest('http://...')); } private function loadImage():void { var loader = new Loader(); loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHttpStatusHandler); loader.name = 'loaderImage'; loader.load(new URLRequest('http://...')); } private function onHttpStatusHandler(e:HTTPStatusEvent):void { if (int(e.status) == 0) { switch (e.currentTarget.loader.name) { case 'loaderImage': break; case 'loaderAvatar': break; } e.currentTarget.removeEventListener(HTTPStatusEvent.HTTP_STATUS, onHttpStatusHandler); } }
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
in4core, немного не то )
А если у меня несколько методов, в каждом из которых URLLoader грузит разного рода информацию? Как в обработчике определить после кого именно он сработал? Можно было бы конечно передавать какой-нибудь свой параметр c addEventListener, но как я знаю, там нет такой возможности... Вот для этого я и использую в Loader свойство name, чтобы потом идентифицировать. В URLLoader такого свойства нет ( не уверен, но может быть, потому что он не является наследником DisplayObject... )
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
Верно.
Нужно немного усложнить реализацию загрузчика, выделив его в отдельную, самостоятельную сущность. Добавить в этот загрузчик возможность сохранять произвольные данные для каждой отдельной операций загрузки или возможность указания разных колбеков. Вообще, этих загрузчиков, менеджеров ресурсов и т.п. уже создано великое множество. Гуглим по запросу: AssetManager AS3.
__________________
Дети не должны знать о своих родителях |
|
|||||
@djken
Можете использовать Dictionary. Перед загрузкой суете ему загрузчик в качестве ключа, а идентификатор в качестве значения: А в обработчике получаете нужный идентификатор: Ну и по окончанию загрузки не забудьте удалить загрузчик из словаря, чтобы мусор не накапливался: |
|
|||||
Самый простой и надежный способ - просто написать свой загрузчик, унаследованный от URLLoader, и добавить ему все необходимые свойства, например name, если это решает проблему
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
caseyryan, спасибо, так и хотел сделать.
Думал, что есть какой-то способ, о котором не знаю )
__________________
кто не отвечает, того garbage collector забирает |
Часовой пояс GMT +4, время: 20:37. |
|
« Предыдущая тема | Следующая тема » |
Теги |
HTTPStatusEvent , HTTP_STATUS |
|
|