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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.04.2009, 13:38
Gorbunkoff вне форума Посмотреть профиль Отправить личное сообщение для Gorbunkoff Найти все сообщения от Gorbunkoff
  № 1  
Ответить с цитированием
Gorbunkoff
 
Аватар для Gorbunkoff

Регистрация: Mar 2007
Сообщений: 13
По умолчанию Как определить кто быстрее загружается ?

Есть в общем то рабочий код в соответствии с которым 3 картинки (скажем это фотки тракторов ) грузяться каждая на свое место и со своим предзагрузчиком. При этом в мультике одновременно отображаюся все три работающие загрузчика. Никак не могу сообразить как сделать
так , чтобы отбражался только тот предагрузчик который опережает
по скорости другие.
Код AS3:
//*********************************************************
// Глобальные константы
package {
	public class Globals {
		public static var Path:String="file:///C|/некий путь/Images/";
		public static var Url:String=null;
		public static var sdvig:uint=0;
		public static var images:Array=["P1.gif","P2.gif","P3.gif"];
		public static var Tname:Array=["Name1","Name2","Name3"];
		public static var I:Number=0;
	}
}
;
 
//*********************************************************
// Цикл загрузки изображений - основной класс документа
package {
	import flash.display.MovieClip;
	import LoadImage;
	import Globals;
 
	dynamic public class Start extends MovieClip {;
	public static var dt:Number=1;
	public static var MC:Array=new Array  ;
 
	public function Start() {
 
		while (Globals.I<Globals.images.length) {
			Globals.sdvig=Globals.I*120;
			Globals.Url=Globals.Path+Globals.images[Globals.I];
			MC[Globals.I]=new LoadImage  ;
			MC[Globals.I].x=Globals.sdvig;
			MC[Globals.I].TractorsName.text=Globals.Tname[Globals.I];
			addChild(MC[Globals.I]);
			Globals.I+=1;
 
		}
	}
 
}
}
&#65279;;
//*********************************************************
// Предзагрузчик
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.text.*;
 
 
public class LoadImage extends MovieClip {
	var _loaderStatus:TextField;
	var TractorsName:TextField;
	var percent:Number;
 
	var loader:Loader=new Loader  ;
	public function LoadImage() {
		TractorsName=new TextField  ;
		var percent=new Number  ;
		var loader:Loader=new Loader  ;
		addChild(loader);
 
		// Добавляем обработчики событий 
		// для контроля за процессом загрузки 
		loader.contentLoaderInfo.addEventListener(Event.OPEN,openHandler);
		loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);
		loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
 
		// Загружаем внешнее изображение 
		loader.load(new URLRequest(Globals.Url));
 
	}
	// Обработка окончания загрузки
	private function completeHandler(event:Event):void {
 
 
		removeChild(_loaderStatus);
		_loaderStatus=null;
		TractorsName.visible=true;
 
 
	}
	// Обработка начала загрузки
	private function openHandler(event:Event):void {
 
		_loaderStatus=new TextField  ;
		addChild(_loaderStatus);
		_loaderStatus.text="Загрузка: 0%";
		_loaderStatus.border=true;
		_loaderStatus.autoSize=TextFieldAutoSize.LEFT;
 
 
		TractorsName.border=true;
		TractorsName.autoSize=TextFieldAutoSize.LEFT;
		TractorsName.visible=false;
		addChild(TractorsName);
	}
	// Обработка процесса загрузки
	private function progressHandler(event:ProgressEvent):void {
		percent=Math.floor(event.bytesLoaded/event.bytesTotal*100);
		_loaderStatus.text="Загрузка:"+percent+"%";
	}
 
	private function unLoadHandler(event:Event):void {
		trace("unLoadHandler: "+event);
	}
 
}
}

Старый 06.04.2009, 13:50
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Грузить данные нужно по-очереди.
__________________
Griver

Старый 06.04.2009, 14:03
Gorbunkoff вне форума Посмотреть профиль Отправить личное сообщение для Gorbunkoff Найти все сообщения от Gorbunkoff
  № 3  
Ответить с цитированием
Gorbunkoff
 
Аватар для Gorbunkoff

Регистрация: Mar 2007
Сообщений: 13
Не понял - что значит по очереди , цикл это не очередь ?

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

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Имеется в виду грузить следующий элемент после полной загрузки предыдущего... В цикле вы просто поочередно вызываете загрузку, а дальше она уже идет одновременно для всех элементов...

Старый 06.04.2009, 14:14
Мечтатель вне форума Посмотреть профиль Отправить личное сообщение для Мечтатель Найти все сообщения от Мечтатель
  № 5  
Ответить с цитированием
Мечтатель
 
Аватар для Мечтатель

Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
По очереди, это когда грузится первый трактор, после того, как произошла деспетчеризация события Event.INIT (именно его нужно отслеживать для успешного обращения к загруженному элементу) старутет загрузка второго трактора, и так далее. Цикличное размножение экземпляров класса Loader не является хорошей практикой программирования.

Старый 06.04.2009, 14:24
Smrad вне форума Посмотреть профиль Отправить личное сообщение для Smrad Найти все сообщения от Smrad
  № 6  
Ответить с цитированием
Smrad

Регистрация: Nov 2008
Сообщений: 205
Отправить сообщение для Smrad с помощью ICQ
Цитата:
Сообщение от Мечтатель Посмотреть сообщение
По очереди, это когда грузится первый трактор, после того, как произошла деспетчеризация события Event.INIT (именно его нужно отслеживать для успешного обращения к загруженному элементу) старутет загрузка второго трактора, и так далее. Цикличное размножение экземпляров класса Loader не является хорошей практикой программирования.
Иногда, расплодившиеся Loader'ы могут в разы увеличить скорость загрузки.

Старый 06.04.2009, 14:23
Gorbunkoff вне форума Посмотреть профиль Отправить личное сообщение для Gorbunkoff Найти все сообщения от Gorbunkoff
  № 7  
Ответить с цитированием
Gorbunkoff
 
Аватар для Gorbunkoff

Регистрация: Mar 2007
Сообщений: 13
А не сложно ли Вам черкнуть пару строчек кода как пример

Старый 06.04.2009, 15:06
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 8  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
А иногда сервер может их отвергнуть.
__________________
Griver

Старый 06.04.2009, 15:51
Smrad вне форума Посмотреть профиль Отправить личное сообщение для Smrad Найти все сообщения от Smrad
  № 9  
Ответить с цитированием
Smrad

Регистрация: Nov 2008
Сообщений: 205
Отправить сообщение для Smrad с помощью ICQ
А иногда Loader может грузить локальные ресурсы .

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

Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
Код AS3:
private var tractorArray:Array=["t1.png","t2.png","t3.png"];
private var counter:int=0;
private var loader:Loader;
 
loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitListener);
loader.load(new URLRequest("http://adobe.com/img/"+tractorArray[counter]));
 
private function loaderInitListener(e:Event):void{
if(counter<tractorArray.length-1){
//размещаем трактор на экране, или выполняем какие либо другие действия
сounter++;
loader=null;
loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitListener);
loader.load(new URLRequest("http://adobe.com/img/"+tractorArray[counter]));
}else{
//размещаем трактор на экране, или выполняем какие либо другие действия
}
}
вот вам пару строчек кода


Последний раз редактировалось Мечтатель; 06.04.2009 в 21:33.
Создать новую тему Ответ Часовой пояс GMT +4, время: 08:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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