не закрывайте тему, пожалуйста. мол название не отражает смысла, в прошлый раз все отражало.
Голову себе сломал уже, не понимаю где ошибка. Проблема в том, что баги возникают в 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, поэтому мнена заволновал вопрос,
будут ли картинки кэшироваться без него?! кэшируются флэшем или браузером?