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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.04.2011, 03:12
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию Странная кухня с Loader (методы close)

Первый раз столкнулся с такой непонятной мне проблемой, есть класс имейдж лоадера, при выполнении функции load каждый раз закрывается loader, но толку ноль, вывожу пройцент загрузки = 150... N , потом появляется картинка 1,затем резко например 2, 4 - и становится на 3й ( при скоростном переключении по картинкам). Привожу код, вполне стандартный

Код AS3:
public function ImageLoader($container:DisplayObjectContainer) 
		{
			super();
			this._cont = $container;
		}
 
		public function load(url:String = null , preloader:DisplayObject = null , loaderVars:Object = null ):void {
 
			_request = new URLRequest(url);
			_preload = preloader;
 
			_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE , loadingDone); // от безисходности , все равно не помогает
			_loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS , onProgress);
 
			try {  
				_loader.close(); 
				_loader.unloadAndStop();
				}
			catch (e:Error) {}
 
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE , loadingDone);
			_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS , onProgress);
			//_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR , onError);
 
			_loader.load(_request);
		}
private function onProgress(e:ProgressEvent):void 
		{
			(_preload as ConeLoader).progress((Math.floor((e.bytesLoaded * 100 / e.bytesTotal))).toString()); // тут вывожу проценты, которые как и сказал при скоростном переключении переваливают за 100
		}
 
		private function loadingDone(e:Event):void 
		{
			_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE , loadingDone);
			_loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS , onProgress);
 
			this.dispatchEvent(new Event( ImageLoader.DONE ));
 
			if (_cont.numChildren) _cont.removeChildAt(0);
 
			_cont.addChild(_loader);
		}
__________________
Марк Tween

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
1 видимо, не выполняется try catch.
2
Код AS3:
try {  
				_loader.close(); 
				_loader.unloadAndStop();
				}
			catch (e:Error) {}
заменить на
Код AS3:
_loader.unload()
не?
3 чисто докопаться: preloaderisplayObject = null и рядом (_preload as ConeLoader).progress...что-то тут не так..интерфейсы не? проверка наличия экземпляра не?
4 ну и последнее: а зачем этот класс?
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 20.04.2011, 13:32
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ну отвечу на все попорядку.
1, надо проверить на ошибку, займусь

2. Не. Потому что, unload выгружает контент, а не останавливает процесс загрузки.
3. Планировалось, что там будут разные прелоадеры, для теста используется один и тот же, потом перепишу корректнее.
4. Класс в котором используется он как подложка и так уже имеет порядка 500-700 строк, поэтому потихоньку все начал выносить, то что НАПРЯМУЮ к классу не относится.

Добавлено через 1 час 12 минут
никто не в курсе?
__________________
Марк Tween

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

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

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


 


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


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