![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Добрый день.
Есть сайт http://www.yukagir.ru/cmspictures/ И есть проблема, которую пока не могу решить. Если не сложно, посмотрите, пожалуйста, раздел "About", используя Opera. При нажатии на картинку открывается окно заданного размера с прелоудером. После загрузки окно должно менять размер и координаты в зависимости от размеров загруженной картинки. В IE, Netscape, Firefox все работает хорошо. В Opera есть две проблемы: во-первых, картинка загружается очень долго (долгое по времени определение, видимо, пути до картинки, сама загрузка, если верить прелоудеру, происходит нормально), во вторых, вторая часть кода после загрузки картинки не срабатывает и окно не меняет своих координат. После того, как картинка попадает в кэш, все хорошо. Нормальную работу раздела для сравнения можно помотреть в IE. Вот код, который находится в первом кадре окна: stop();
empty._alpha = 0;
empty.loadMovie(_parent.conteiner.temp_win, 1);
preloader._alpha=50;
cl_but_min = 25; // ограничение кнопки close по иксу справа
close_but._x = win_head._x + win_head._width - cl_but_min;
win_head._x = empty._x;
win_head._width = empty._width;
win_head._y = empty._y - win_head._height;
preloader.onEnterFrame = function(){
var tot:Number = empty.getBytesTotal()/1000;
var lod:Number = empty.getBytesLoaded()/1000;
preloader.kb = int(tot)+"kb / "+int(lod)+"kb";
preloader.proc = int(lod/tot*100)+"%";
preloader.gotoAndStop(int(lod/tot*100));
if((lod*tot>0)&&(lod>=tot)){
gotoAndStop(2);
win_frame._width = empty._width;
win_frame._height = empty._height;
win_head._width = empty._width;
close_but._x = win_head._x + win_head._width - cl_but_min;
_parent.new_win._x = 400 - _parent.new_win._width/2;
_parent.new_win._y = 300 - _parent.new_win._height/2;
empty._alpha = 100;
unloadMovie(preloader);
}
}
close_but.onRelease = function(){
_parent.conteiner.buts_on();
unloadMovie(_parent.new_win);
}
win_head.onPress = function(){
_parent.new_win.startDrag(false);
}
win_head.onRelease = function(){
stopDrag();
}
__________________
Yukagir |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Браузерных зависимостей почти не бывает. Вот зависимость от версии плеера да. Для начала убедись, что плееры во всех браузерах одной версии.
|
|
|||||
|
последние версии стоят. специально сначала снес все, а потом заново с adob поставил.
__________________
Yukagir |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Выведи алертом после загрузки размеры картинки. Я бы на твоем месте использовал бы MovieClipLoader.
|
|
|||||
|
я попробую, спасибо. а есть принципиальная разница? кодом написаным вручную работа лоадера не повторяется?
__________________
Yukagir |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Нет, у MovieClipLoader четкое отслеживание момента загрузки.
Ещё меня смущает gotoAndStop(2); сразу после загрузки. Что и куда стопится? |
|
|||||
|
ну, фактически, это не обязательно было. на втором кадре бэкграунда нет. поленился из него клип делать и сделал переход на след. кадр с пустым слоем.
можно я дам исходник посмотреть?
__________________
Yukagir |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну покажите.
|
|
|||||
|
вот исходник. картинок. естественно, нет. окно подгружается скриптом, т.е. оно не в сцене, а в библиотеке. в папке _win, называется "win".
спасибо большое.
__________________
Yukagir Последний раз редактировалось Yukagir; 25.03.2007 в 23:30. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В loadMovie второй параметр строковый, а не числовой.
stop();
empty._alpha = 0;
preloader._alpha = 50;
cl_but_min = 25;
// ограничение кнопки close по иксу справа
close_but._x = win_head._x+win_head._width-cl_but_min;
win_head._x = empty._x;
win_head._width = empty._width;
win_head._y = empty._y-win_head._height;
onLoadInit = function () {
win_frame._width = empty._width;
win_frame._height = empty._height;
win_head._width = empty._width;
close_but._x = win_head._x+win_head._width-cl_but_min;
_parent.new_win._x = 400-_parent.new_win._width/2;
_parent.new_win._y = 300-_parent.new_win._height/2;
empty._alpha = 100;
delete preloader.onEnterFrame;
unloadMovie(preloader);
};
mcl = new MovieClipLoader();
mcl.addListener(this);
mcl.loadClip(_parent.conteiner.temp_win, empty);
preloader.onEnterFrame = function() {
var tot:Number = empty.getBytesTotal()/1000;
var lod:Number = empty.getBytesLoaded()/1000;
preloader.kb = int(tot)+"kb / "+int(lod)+"kb";
preloader.proc = int(lod/tot*100)+"%";
preloader.gotoAndStop(int(lod/tot*100));
};
close_but.onRelease = function() {
_parent.conteiner.buts_on();
unloadMovie(_parent.new_win);
};
win_head.onPress = function() {
_parent.new_win.startDrag(false);
};
win_head.onRelease = function() {
stopDrag();
};
|
![]() |
![]() |
Часовой пояс GMT +4, время: 12:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|