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

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

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

Регистрация: Sep 2008
Сообщений: 64
По умолчанию Как добавить прелоадер к превьюшкам в галерее

Есть галерея, как добавить прелодер для каждой превьюшки? Как правильно создать листенер для каждой превьюхи?

В таком варианте отслеживается только загрузка последней
Код AS1/AS2:
galleryXML.onLoad = function(success) {
	if (success) {
		total = this.firstChild.childNodes[1].childNodes.length;
		for (var i:Number = 0; i<total; i++) {
thumbnails.push(this.firstChild.childNodes[1].childNodes[i].attributes.thumbnail);
 
			var preview_mc:MovieClip = thumbnails_mc.attachMovie("box", "box"+i, i);
			preview_mc.ID = i;
 
			var loader:MovieClipLoader = new MovieClipLoader();
			var listener:Object = {};
 
			loader.addListener(listener);
			loader.loadClip(galleryFolder+thumbnails[i], preview_mc.target_mc);
 
			listener.onLoadProgress = function(target:MovieClip,  bytesLoaded:Number, bytesTotal:Number):Void {
			percent = Math.round(bytesLoaded/bytesTotal*100);
			preview_mc.preloader_txt.text = (percent);
			};
 
			}
}

Старый 22.10.2009, 02:23
amexdesign вне форума Посмотреть профиль Отправить личное сообщение для amexdesign Посетить домашнюю страницу amexdesign Найти все сообщения от amexdesign
  № 2  
Ответить с цитированием
amexdesign

Регистрация: Jan 2009
Адрес: Германия, Bochum
Сообщений: 169
Отправить сообщение для amexdesign с помощью Skype™
попробуй так:
Код AS1/AS2:
var total:Number;
var thumbnails:Array = new Array();
galleryXML.onLoad = function(success) {
	if (success) {
		total = this.firstChild.childNodes[1].childNodes.length;
		for (var i:Number = 0; i < total; i++) {
			thumbnails[i] = this.firstChild.childNodes[1].childNodes[i].attributes.thumbnail;
		}
                loadThumbs();
	}
}
 
function loadThumbs(){
	for (var i:Number = 0; i < total; i++) {
		var preview_mc:MovieClip = thumbnails_mc.attachMovie("box", "box"+i, i);
		preview_mc.ID = i;
		var mclListener:Object = new Object();
    	        mclListener.onLoadStart = function (target:MovieClip){
    	        };
    	        mclListener.onLoadProgress = function (target:MovieClip, bytesLoaded:Number,bytesTotal:Number):Void {
        	        percent = Math.round(bytesLoaded/bytesTotal*100);
			preview_mc.preloader_txt.text = percent;
		};
    	        mclListener.onLoadComplete = function (target:MovieClip){
		};
    	        mclListener.onLoadInit = function (target:MovieClip){
		};
    	        var image_mcl:MovieClipLoader = new MovieClipLoader();
    	        image_mcl.addListener(mclListener);
    	        image_mcl.loadClip(thumbnails[i], preview_mc.target_mc);
	}
}

Старый 22.10.2009, 02:33
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Лучше ограничится только одним объектом MovieClipLoader и соответственно одним набором обработчиков и одним слушателем. Объявить их вне цикла.
А вот в цикле как раз - только attachMovie и loadClip.
Так можно поступить, поскольку внутри обработчиков есть аргумент target:MovieClip. От него и нужно будет отталкиваться, например, при индикации загрузки.

Вот так:
Код AS1/AS2:
function loadThumbs(){
 
	var mclListener:Object = new Object();
	mclListener.onLoadStart = function (target:MovieClip){
	};
	mclListener.onLoadProgress = function (target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
		percent = Math.round(bytesLoaded / bytesTotal * 100);
		target._parent.preloader_txt.text = percent; //target._parent   - это соответственные box1..., то есть родители target_mc по этой записи: preview_mc.target_mc
	};
	mclListener.onLoadComplete = function (target:MovieClip){
	};
 
	mclListener.onLoadInit = function (target:MovieClip){
	};
	var loader:MovieClipLoader = new MovieClipLoader();
	loader.addListener(mclListener);
 
	for (var i:Number = 0; i < total; i++) {
		var preview_mc:MovieClip = thumbnails_mc.attachMovie('box', 'box' + i, i);
		preview_mc.ID = i;
		loader.loadClip(thumbnails[i], preview_mc.target_mc);    	      
	}
}


Последний раз редактировалось mooncar; 22.10.2009 в 03:15.
Старый 22.10.2009, 03:07
amexdesign вне форума Посмотреть профиль Отправить личное сообщение для amexdesign Посетить домашнюю страницу amexdesign Найти все сообщения от amexdesign
  № 4  
Ответить с цитированием
amexdesign

Регистрация: Jan 2009
Адрес: Германия, Bochum
Сообщений: 169
Отправить сообщение для amexdesign с помощью Skype™
Цитата:
у вас preview_mc.target_mc - это целевой мувик, чему он, интересно, равен?
это не у меня, а у "хозяина" этой темы(см. начало темы). По видимому у него в атаченных мувиках 'box' лежит ещё и мувик непосредственно для превьюшек....

Цитата:
Лучше ограничится только одним объектом MovieClipLoader
согласен, его вообще можно вынести за функцию loadThumbs()....

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от amexdesign Посмотреть сообщение
согласен, его вообще можно вынести за функцию loadThumbs()....
Ага, я так обычно делаю...
Код AS1/AS2:
var loader:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
loader.addListener(mclListener);
 
mclListener.onLoadStart = function (target:MovieClip){
};
mclListener.onLoadProgress = function (target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
	percent = Math.round(bytesLoaded / bytesTotal * 100);
	target._parent.preloader_txt.text = percent; //target._parent   - это соответственные box1..., то есть родители target_mc по этой записи: preview_mc.target_mc
};
mclListener.onLoadComplete = function (target:MovieClip){
};
 
mclListener.onLoadInit = function (target:MovieClip){
};
 
function loadThumbs(){ 
	for (var i:Number = 0; i < total; i++) {
		var preview_mc:MovieClip = thumbnails_mc.attachMovie('box', 'box' + i, i);
		preview_mc.ID = i;
		loader.loadClip(thumbnails[i], preview_mc.target_mc);    	      
	}
}

Старый 22.10.2009, 06:46
flamee вне форума Посмотреть профиль Отправить личное сообщение для flamee Найти все сообщения от flamee
  № 6  
Ответить с цитированием
flamee

Регистрация: Feb 2009
Сообщений: 18
Вопрос может даже тупой но?
а) будет ли ждать цикл пока лоадер загрузить картинку?
б) если ждет не зависнет ли флешка пока цикл будет стоять?

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
a) а ему и не нужно ждать - если вы сделали, как я рекомендовал, то в цикле у вас только старт загрузки, а за ее обслуживание отвечает экземмпляр MovieClipLoader и обработчики его событий.
б) с чего бы это циклу "стоять"? Цикл отработается своим чередом и практически мгновенно, а все остальное отработася своим чередом.
Автор, Action Script работает асинхронно.

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

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

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


 


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


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