Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   В ИЕ после обновления страницы картинки в полосе прокрутки позиционируются неправильн (http://www.flasher.ru/forum/showthread.php?t=130368)

djyamato 24.09.2009 17:52

InternetExplorer неправ. позиционирование после обновл. страницы
 
Вложений: 2
Здравствуйте
Вот какого рода проблема
Есть прокручивалка картинок ( МОРДОЛЕНТА :) ) http://divisionby0.org/web_Portfolio/walejo/ala_mamba/
почти все параметры вынесены из флэшки и можно выставить размер картинок, длину флэшки, высоту, количество показываемых картинок и.т.д.
При наведении на картинку она немного увеличивается - так что по высоте флэшка должна быть чуть выше чем картинка.

При обновлении страницы в Опере и FF все работает нормально (хоть миллион раз обновить страницу) - картинки подгружаемые в контейнер (MovieClip) позиционируются по Y там где нужно. А вот в ИЕ при обновлении страницы - почти наполовину своей высоты ниже позиционируются картинки загруженные, а может быть это контейнер(MovieClip) позиционируется неправильно (если обновлять страницу и дальше, то "опускания" картинок больше не происходит).
То есть, при обновлении страницы в ИЕ картинки как бы "падают" ниже, а при первой загрузке - правильно позиционируются.


Флэшка встроена swfObject-ом
Вот код вставки флэшки в страницу:

PHP код:

<div id="flash"><p align="right"><br />
      &
#210;ðåáóåòñÿ Adobe Flash Player 8.0</p>
    
<p align="center"><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&amp;promoid=BIOW" target="_blank">Download Adobe Flash</a></p>
    </
div>
    <
script type="text/javascript" language="javascript">
        var 
so = new SWFObject("sqlGet2.swf""mymovie""858""97""8""#ffffff");
            
so.addParam("menu""false");
            
so.addParam("scale""noscale");
            
so.addParam("allowFullScreen""false");
            
so.addVariable("AvatarsFolder""avatars");
            
so.addVariable("AnimSpd""4");
            
so.addVariable("RightRewindSpeed""7");
            
so.addVariable("notSelectedPersonsAlpha""60");
            
so.addVariable("PersonPic_width""60");
            
so.addVariable("PersonPic_height""88");
            
so.addVariable("PersonPic_Zazor""6");
            
so.addVariable("totalPersonsVisible""13");
            
so.addVariable("CodePage""true");
            
so.addVariable("linkPage""_blank");
            
so.addVariable("sqlGetScript""getDATA.php");

            
so.write("flash");
    
</script> 


во флэшке:
Код AS1/AS2:

Stage.scaleMode="noScale";
Stage.align ="TL";
Object.registerClass("PersonObj",PersonObj); // мувик в библиотеке
var sqlGetter=new LoadVars();
...
_root.createEmptyMovieClip("PersonsHolder",_root.getNextHighestDepth());
_root.PersonsHolder._x=0;
_root.PersonsHolder._y=Number(_root.PersonPic_height)/2+Math.abs(Stage.height-Number(_root.PersonPic_height))/2; //  это контейнер для подгруженных фото
...
sqlGetter.onLoad=function(){
        Persons_array=this.DB_data.split("<>"); // ответ скрипта читающего из базы MySQL
        Persons_array.pop();
        for(i=0;i<Persons_array.length;i++){
                var PersCont=_root.PersonsHolder.createEmptyMovieClip("PersonCont_"+i,_root.PersonsHolder.getNextHighestDepth());
                var PERSON=PersCont.attachMovie("PersonObj","PersonObj",PersCont.getNextHighestDepth());
                PersCont._width=_root.PersonPic_width;
                PersCont._height=_root.PersonPic_height;
                PersCont._x=i*(PersCont._width+Zazor)+(PersCont._width+Zazor)/2;
                PersCont._y=0;
 
                PERSON.dataArray=new Array();
                PERSON.nmbr=i;
                PERSON.parent=PersCont;
                PERSON.dataArray=Persons_array[i].split(",");
                PersonsObjectsArray.push(PERSON);
                PERSON.dataArray.pop();
                UserPicture_MCL.loadClip(PERSON.dataArray[PERSON.dataArray.length-2],PERSON.hlst);
        }
        if(Persons_array.length>Number(_root.totalPersonsVisible)){
                AnimationRightRewindSpeedRazn=Persons_array.length-Number(_root.totalPersonsVisible);
                PersonsHolder._x=(-1)*AnimationRightRewindSpeedRazn*(Number(_root.PersonPic_width)+Zazor);
                _root.AnimationRightRewindSpeed_Interval=setInterval(AnimationRightRewind,AnimationRightRewindSpeed);
                LoadArea_x=PersonsHolder._x;
        }
}
 
 
 
sqlGetter.load(_root.sqlGetScript+"?"+Math.random(115));


mooncar 24.09.2009 18:45

Была похожая проблема...
Код не совсем ясен.
Вот это как понимать?
Код AS1/AS2:

"PersonCont_"+i

Как у вас организован цикл? У вас onLoad несколько раз вызывается в цикле?
Покажите побольше. Stage тут не нужен, он не при чем.
PersonObj в аттаче как меняется?

djyamato 24.09.2009 18:57

Цитата:

Сообщение от mooncar (Сообщение 853185)
Была похожая проблема...
Код не совсем ясен.
Вот это как понимать?
Код AS1/AS2:

"PersonCont_"+i

Как у вас организован цикл? У вас onLoad несколько раз вызывается в цикле?
Покажите побольше. Stage тут не нужен, он не при чем.
PersonObj в аттаче как меняется?

"PersonCont_"+i это имена - то есть если в цикле то: PersonCont_0 PersonCont_1 PersonCont_2 итд


Код дополнил - взгляните будьте добры

mooncar 24.09.2009 19:31

Сделайте высоту сцены побольше (повыше), сделайте рамочку для PersonsHolder и для индивидуальных контейнеров, а то все белое. Тогда можно будет локализовать проявление проблемы и думать дальше.
Понять можно будет - съезжает ли сам общий холдер, или ниже делаются контейнеры с картинками или даже сами картинки внутри индивидуальных контейнеров, хотя это вряд ли.

Добавлено через 6 минут
Все таки что-то тут может быть с самой Stage.
Вот тут у вас задается положение общего холдера:
Код AS1/AS2:

root.PersonsHolder._y=Number(_root.PersonPic_height)/2+Math.abs(Stage.height-Number(_root.PersonPic_height))/2;

Может его жестко задать?

djyamato 24.09.2009 19:43

Спасибо за советы - помучаю флэшку с рамочками
Попробую жестко НО проблема эта в ИЕ выявляется не при первой загрузке а при обновлении страницы - при первой загрузке все позиционируется правильно

mooncar 24.09.2009 19:52

Цитата:

Сообщение от djyamato (Сообщение 853218)
а при обновлении страницы - при первой загрузке все позиционируется правильно

Это-то я заметил. Возможно, дело в разнице работы кэша IE и остальных браузеров? То есть при повторной загрузке, например, swf-ка берется уже из кэша. Попробуйте добавить при публикации к swf рандомную переменную, дабы обойти кэш.

djyamato 24.09.2009 19:56

Цитата:

Сообщение от mooncar (Сообщение 853224)
Это-то я заметил. Возможно, дело в разнице работы кэша IE и остальных браузеров? То есть при повторной загрузке, например, swf-ка берется уже из кэша. Попробуйте добавить при публикации к swf рандомную переменную, дабы обойти кэш.

а вот этого я не умею - подскажите пожалуйста как добавить рандомную переменную при публикации :rolleyes:

mooncar 24.09.2009 20:11

Если у вас страница php:
Код:

var so = new SWFObject("sqlGet2.swf<?php echo('?'.rand(1, 200) )?>", "mymovie", .....
Не уверен, сработает ли для SWFObject, и кроме того если страница у вас не php, то там у вас JS-скрипт, вместо <?php echo('?'.rand(1, 200) )?> для генерации нужно использовать JS-вставку, я вам не подскажу, с JS не очень дружу.

Добавлено через 2 минуты
Но вообще, конечно, кэш кэшем, проблемы быть не должно такой.

djyamato 24.09.2009 21:35

ясненько спасибо
буду экспериментировать
как сделаю опишу как я этот досадный глюк поборол

mooncar 25.09.2009 09:33

Да, проблема проявляется, когда IE после рефреша берет ролик из кэша. Если открыть страницу, загрузить флешку, потом зайти в "настройки обозревателя", нажать "удалить файлы" и обновить страницу, все в порядке.
Можно форсировать некэширование, но правильнее все же разобраться, почему так ведет себя флеш.


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

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