![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
random13 Понял. Не умею вешать слушатели. Буду разбираться. Вопрос! Я сильно проиграю в производительности и размере флешки, если буду использовать эту библиотеку? По сути там реализовано как раз то что вы описали. Ведь удобная же, да?)
|
|
|||||
|
Lorem ipsum
|
У меня было удобно все COMPLETE отрабатывать в одном методе — он складывал полученные XML в массив, инкрементировал некую переменную и сравнивал ее с ожидаемым количеством загруженных данных. Если больше — шел дальше: перебирал массив и в зависимости от имени корневого элемента отсылал на тот или иной парсер.
Сделай так же. Даже если у тебя обработчики разные (ну например ты парсишь сразу или еще что-то) — вынеси инкремент с проверкой в отдельную функцию и вызывай ее в каждом своем обработчике.
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Zebestov, а можно код? Я даже понять не могу что не могу понять) Вроде все отдельные слова понимаю, а все вместе не складывается(
|
|
|||||
package { import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; public class Main extends Sprite { private var _map:Dictionary = new Dictionary(); private var _counter:int; public function Main():void { var urls:Array = ["xml1.xml", "xml2.xml"]; var parsers:Array = [parser1, parser2]; _counter = urls.length; for (var i:int = 0; i < _counter; i++) { var loader:URLLoader = new URLLoader(new URLRequest(urls[i])); loader.addEventListener(Event.COMPLETE, onLoadComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, onLoadError); _map[loader] = parsers[i]; } } private function onLoadError(evnt:IOErrorEvent):void { trace( "Main.onLoadError > evnt : " + evnt ); if (--_counter == 0) startApp();//или не старт, дело хозяйское } private function onLoadComplete(evnt:Event):void { evnt.target.removeEventListener(Event.COMPLETE, onLoadComplete); var data:XML = new XML(evnt.target.data); var parser:Function = _map[evnt.target]; parser(data); if (--_counter == 0) startApp(); } private function startApp():void { trace( "Main.startApp" ); } private function parser1(data:XML):void { trace( "Main.parser1 > data : " + data ); } private function parser2(data:XML):void { trace( "Main.parser2 > data : " + data ); } } } |
|
|||||
|
Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
|
Цитата:
тоже самое пишешь самостоятельно ток без всякой кривоты
__________________
Коллекционирую чужие ActionScript Блоги |
|
|||||
|
Lorem ipsum
|
private function loadXML():void { var ldr1:URLLoader = new URLLoader(new URLRequest("http://www.domain.com/data1.xml")); ldr1.addEventListener(Event.COMPLETE, onXMLComplete); var ldr2:URLLoader = new URLLoader(new URLRequest("http://www.domain.com/data2.xml")); ldr2.addEventListener(Event.COMPLETE, onXMLComplete); var ldr3:URLLoader = new URLLoader(new URLRequest("http://www.domain.com/data3.xml")); ldr3.addEventListener(Event.COMPLETE, onXMLComplete); } private function onXMLComplete(e:Event):void { e.target.removeEventListener(Event.COMPLETE, onXMLComplete); this._XMLHolder.push(XML((e.target as URLLoader).data)); if (this._XMLHolder.length == 3) this.parseXML(); } private function parseXML():void { var tree:XML; for each (tree in this._XMLHolder) { switch (tree[0].name().toString()) { case "data1": this.holdData1(tree); break; case "data2": this.holdData2(tree); break; case "data3": this.holdData3(tree); break; } } }
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
silin Спасибо. Понял каких знаний не хватало.
Это же classFactory легко можно сделать, мне как раз нужно. Самое смешное, что читал про это даже. Но видимо пока в деле фичу не увидишь... random13 А что конкретно было не так? Я вроде как обучаюсь флешу. Хочется выбрать один вариант и уже спокойно пользовать и не переучиваться. Но уж больно подкупает бульк простотой. Хотя и самому подгружать не большая проблема, как мне уже показали, но все-таки. По различным вариациям запроса "bulk-loader недостатки" ничего не нашел. В чем проигрываем? Память, скорость, функциональность? Zebestov Угу, понял все, кроме старта загрузки. URLLoader в конструкторе начинает загрузку? Последний раз редактировалось proxiServer; 23.12.2009 в 16:46. |
|
|||||
|
Lorem ipsum
|
ага
конечно задротней сначала вешать обработчик на процессы, прежде чем запускать их =) но не в данном случае. хотя с моим максимализмом я удивлен как это я не сделал все через load() 0o
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
|
Цитата:
его простота как то невнятно работает, прибавляет уж не помню точно, помойму около 10k веса и ничего хорошего, то же самое выполняет пара методов описанных выше..
__________________
Коллекционирую чужие ActionScript Блоги |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
random13 У меня приложение уже больше двух мегабайт. Для банера я конечно эту либу не буду использовать, но для флешек весом больше 100кб можно наверное)
Zebestov from help.adobe Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|