Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.12.2009, 18:19
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 11  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
random13 Понял. Не умею вешать слушатели. Буду разбираться. Вопрос! Я сильно проиграю в производительности и размере флешки, если буду использовать эту библиотеку? По сути там реализовано как раз то что вы описали. Ведь удобная же, да?)

Старый 22.12.2009, 18:34
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 12  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
У меня было удобно все COMPLETE отрабатывать в одном методе — он складывал полученные XML в массив, инкрементировал некую переменную и сравнивал ее с ожидаемым количеством загруженных данных. Если больше — шел дальше: перебирал массив и в зависимости от имени корневого элемента отсылал на тот или иной парсер.
Сделай так же. Даже если у тебя обработчики разные (ну например ты парсишь сразу или еще что-то) — вынеси инкремент с проверкой в отдельную функцию и вызывай ее в каждом своем обработчике.
__________________
Поймай яблоко 2!

Старый 23.12.2009, 10:52
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 13  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
Zebestov, а можно код? Я даже понять не могу что не могу понять) Вроде все отдельные слова понимаю, а все вместе не складывается(

Старый 23.12.2009, 11:36
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 14  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
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 );
 
		}
	}
 
}

Старый 23.12.2009, 12:57
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 15  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
Цитата:
Сообщение от proxiServer Посмотреть сообщение
random13 Понял. Не умею вешать слушатели. Буду разбираться. Вопрос! Я сильно проиграю в производительности и размере флешки, если буду использовать эту библиотеку? По сути там реализовано как раз то что вы описали. Ведь удобная же, да?)
значительно проираете, я по первости тоже пробовал использовать BulkLoader, лажа полная...

тоже самое пишешь самостоятельно ток без всякой кривоты
__________________
Коллекционирую чужие ActionScript Блоги

Старый 23.12.2009, 13:43
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 16  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Код AS3:
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;
		}
	}
}
Ну как-то так. В моем случае я точно знаю, что гружу 3 XML-документа, и их надо парсить по-разному.
__________________
Поймай яблоко 2!

Старый 23.12.2009, 16:26
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 17  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
silin Спасибо. Понял каких знаний не хватало.

Код AS3:
			var parser:Function = _map[evnt.target];
			parser(data);
Это же classFactory легко можно сделать, мне как раз нужно. Самое смешное, что читал про это даже. Но видимо пока в деле фичу не увидишь...

random13 А что конкретно было не так? Я вроде как обучаюсь флешу. Хочется выбрать один вариант и уже спокойно пользовать и не переучиваться. Но уж больно подкупает бульк простотой. Хотя и самому подгружать не большая проблема, как мне уже показали, но все-таки. По различным вариациям запроса "bulk-loader недостатки" ничего не нашел. В чем проигрываем? Память, скорость, функциональность?

Zebestov Угу, понял все, кроме старта загрузки. URLLoader в конструкторе начинает загрузку?


Последний раз редактировалось proxiServer; 23.12.2009 в 16:46.
Старый 23.12.2009, 18:43
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 18  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от proxiServer Посмотреть сообщение
URLLoader в конструкторе начинает загрузку?
ага

конечно задротней сначала вешать обработчик на процессы, прежде чем запускать их =) но не в данном случае. хотя с моим максимализмом я удивлен как это я не сделал все через load() 0o
__________________
Поймай яблоко 2!

Старый 23.12.2009, 22:19
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 19  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
Цитата:
Сообщение от proxiServer Посмотреть сообщение
silin Спасибо. Понял каких знаний не хватало.

Код AS3:
			var parser:Function = _map[evnt.target];
			parser(data);
Это же classFactory легко можно сделать, мне как раз нужно. Самое смешное, что читал про это даже. Но видимо пока в деле фичу не увидишь...

random13 А что конкретно было не так? Я вроде как обучаюсь флешу. Хочется выбрать один вариант и уже спокойно пользовать и не переучиваться. Но уж больно подкупает бульк простотой. Хотя и самому подгружать не большая проблема, как мне уже показали, но все-таки. По различным вариациям запроса "bulk-loader недостатки" ничего не нашел. В чем проигрываем? Память, скорость, функциональность?

Zebestov Угу, понял все, кроме старта загрузки. URLLoader в конструкторе начинает загрузку?

его простота как то невнятно работает, прибавляет уж не помню точно, помойму около 10k веса и ничего хорошего, то же самое выполняет пара методов описанных выше..
__________________
Коллекционирую чужие ActionScript Блоги

Старый 24.12.2009, 10:36
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 20  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
random13 У меня приложение уже больше двух мегабайт. Для банера я конечно эту либу не буду использовать, но для флешек весом больше 100кб можно наверное)

Zebestov
from help.adobe
Цитата:
Операция загрузки может начаться сразу же, если таковое указано (дополнительные сведения см. в разделе о load).
Что-то я не нашел там про, как таковое указать.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:25.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.