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

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

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

Регистрация: Feb 2009
Сообщений: 63
По умолчанию Баги: Перекрытие и смещение картинок

не закрывайте тему, пожалуйста. мол название не отражает смысла, в прошлый раз все отражало.

Голову себе сломал уже, не понимаю где ошибка. Проблема в том, что баги возникают в IE, в других браузерах все норм.

Я делаю сайт для фотостудии, подргужаю много картинок с помощью лоадера.

баг№1: в разделе смакуйте иногда появляется черный прямоугольник с прозрачностью 70% который перекрывает основные картинки
вот код:
Код AS1/AS2:
function loadSmack(){
	function loadByNumber(num:Number){
		//trace(num);
		var container:MovieClip = targetMC.createEmptyMovieClip("container"+num, targetMC.getNextHighestDepth());
		var photoLDR:mx.controls.Loader = container.createClassObject(mx.controls.Loader, num, container.getNextHighestDepth());
		container._alpha = 70;
		container.Num = num;
		photoLDR.setSize(1,1);
		photoLDR.scaleContent = false;
		photoLDR.autoLoad = true;
		photoLDR.contentPath = photo_array[num]["Small"];
 
		container.onPress = function(){
			_global.rubric = "Смакуйте";
			_global.open_photo = photo_array[this.Num]["Url"];
			_global.rubricNumber = -1;
			window.gotoAndStop("viewer");
			window.viewerLoad();
		}
		container.onRollOver = function(){
			this._alpha = 100;
		}
		container.onRollOut = function(){
			this._alpha = 70;
		}
		// move Loader in correct place
		var listenerObject:Object = new Object();
		listenerObject.complete = function(eventObj:Object){
			var photoLDR:mx.controls.Loader = eventObj.target;
			var container:MovieClip = photoLDR._parent;
			scaleing = SHORTCUT_HEIGHT/photoLDR._height*100;
			container._xscale = scaleing;
			container._yscale = scaleing;
			//trace("_width:"+photoL._width+" _height:"+photoL._height+"    width:"+photoL.width+" height:"+photoL.height);
 
			if (currentX+container._width >= (maxX)){
				currentX=0;
				currentY+=SPACE_BETWEEN_SHORTCUT+SHORTCUT_HEIGHT;
			}
			container._x = currentX;
			container._y = currentY;
 
			currentX+=container._width+SPACE_BETWEEN_SHORTCUT;
 
			// load next picture
			if ((num<photo_array.length) && (currentY<SHORTCUT_HEIGHT+SHORTCUT_HEIGHT+SPACE_BETWEEN_SHORTCUT)){
				loadByNumber(num+1);
			}
		}
		photoLDR.addEventListener("complete", listenerObject);
	}
 
	var targetMC:MovieClip = smack;
	var SHORTCUT_HEIGHT = 53;		// the height of small image in photo part
	var SPACE_BETWEEN_SHORTCUT = 5;	// space between images
	var photo_array:Array = _global.portfolio_array["Смакуйте"]["Images"];
 
	// local variables
	var currentX = 0;
	var maxX = targetMC._width;
	var currentY = 0;
	var maxY = targetMC._height;
	loadByNumber(0);
	targetMC.setMask(targetMC.area);
}
баг№2: время от времени смещаются фотографии во вьювере, туда можно попасть кликнув на фотку в блоке "смакуйте". та же ситуация с логотипом снизу. смещается вправо вниз.

баг№3: на главной странице (она появляется при загрузке). иногда перекрываются фотографии, гружу последовательно, так же использую лоадер.
код:
(эта функция вызывается с параметром 0)
Код AS1/AS2:
	function loadByNumber(num:Number){
		var photoLDR:mx.controls.Loader = targetMC.createClassObject(mx.controls.Loader, num, targetMC.getNextHighestDepth());
		photoLDR.scaleContent = false;
		photoLDR.autoLoad = true;
		photoLDR.contentPath = photo_array[num]["Small"];
		photoLDR.onPress = function(){
			_global.rubric = rubric_array[this._name];
			_global.open_photo = photo_array[this._name]["Url"];
			_global.rubricNumber = rubric_number_array[this._name];
			_root.cont.window.gotoAndPlay("viewer");
		}
 
		// move Loader in correct place
		var listenerObject:Object = new Object();
		listenerObject.complete = function(eventObj:Object){
			var targetLDR:mx.controls.Loader = eventObj.target;
			trace(num+" width:"+targetLDR.width+" path:"+photo_array[num]["Small"]);
			targetLDR._x = currentX;
			targetLDR._y = currentY;
			if (targetLDR._width!=0){
				currentX+=targetLDR._width+SPACE_BETWEEN_SHORTCUT;
 
				if (currentX >= (maxX-targetLDR._width)){
					trace("перенос. curX:"+currentX+" photoLDR._width:"+targetLDR._width+" maxX"+maxX);
					currentX=0;
					currentY+=SPACE_BETWEEN_SHORTCUT+SHORTCUT_HEIGHT;
					targetLDR._x = currentX;
					targetLDR._y = currentY;
					currentX+=photoLDR._width+SPACE_BETWEEN_SHORTCUT;
				}
			}
			else{
				destroyObject(targetLDR);
			}
			//load next picture
			if((num+1<photo_array.length)&&(currentY<SHORTCUT_HEIGHT*3+SPACE_BETWEEN_SHORTCUT*2)){
				loadByNumber(num+1);
			}
		}
		photoLDR.addEventListener("complete", listenerObject);
 
	}
есть предположения, что баги возникают только под вистой в IE, больше я их ни где не видел.
вот адрес сайта: http://harlemstudio.ru/
заранее спасибо за отклик

Добавлено через 56 минут
это еще не все.
иногда не срабатывает событие "complete". после вызова процедуры load("path..")

есть основания полагать, что лоадер не везде и не всегда работает корректно.

хм.. думаю о том, чтобы переписать все без Loadera, поэтому мнена заволновал вопрос,
будут ли картинки кэшироваться без него?! кэшируются флэшем или браузером?


Последний раз редактировалось mrMEM; 16.04.2009 в 22:09.
Старый 19.04.2009, 14:03
mrMEM вне форума Посмотреть профиль Отправить личное сообщение для mrMEM Найти все сообщения от mrMEM
  № 2  
Ответить с цитированием
mrMEM

Регистрация: Feb 2009
Сообщений: 63
ок, спасибо.

на данный момент вижу решением отказаться от компонента Loader. Надеюсь услышать решение, которое можно быстрее воплотить. Сайт гарит.

Добавлено через 59 часов 17 минут
Избавился от бага переписав сайт, подгружая основные картинки через MovieClipLoader.

Считаю, что основные ошибки/баги возникали из-за того, что иногда Loader не вызывал событие complete. Некоторые смещения картинок - мой касяк.

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

Теги
loader , ошибка
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


 


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


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