Просмотр полной версии : Fullscreen+restore down и резиновые баннеры
Сделала резиновый баннер. Все работает прекрасно, но когда проверяю его в браузере начинается глюк: нажимаю на фулскрин и рестор даун, элементы оказываются на кривых местах, все исправляется путем ресайза. Но мне нужно, естественно, чтобы все всегда было на своих местах. Возможно есть еще какая-то функция, кроме onResize? Как правильно подойти к этому?
Stage.scaleMode = "noScale";
Stage.align = "LT";
onResize = function() {
if (Stage.width>768) {
obj2._x = obj1._width;
obj3._x = obj1._width+obj2._width+4;
obj4._x = obj6._x+(obj6._width/2)-obj4._width;
obj5._x = (obj6._x+obj4._width)+(obj6._width/2+obj4._width/2)-obj5._width;
obj6._x = obj1._width+obj2._width+obj3._width;
maska._width = Stage.width;
stroke._width = Stage.width-1;
};
if (Stage.width<=768) {
obj2._x = obj1._width;
obj3._x = obj1._width+obj2._width+4;
obj6._x = obj1._width+obj2._width+obj3._width;
maska._width = Stage.width;
stroke._width = Stage.width-1;
};
if (Stage.width>884) {
redtext._x = (obj3._width*2)+10;
bluetext._x = obj2._width+15;
};
if (Stage.width<884) {
redtext._x = (obj3._width*2)-15;
bluetext._x = obj2._width-15;
};
}
Stage.addListener(this);
Я извиняюсь, если вопрос тупой, но я дуб:)
Есть такая функция. Точнее событие, которое можно обработать.
Выполняйте то, что у вас выполняется на onResize, также при выполнении восстановления оконного режима. Отследить переход к обычному показу можно с помощью соотв. обработчика
onFullScreen = function(bFull:Boolean) {}
т.е. bFull когда становится false.
Попробуйте:
Stage.scaleMode = "noScale";
Stage.align = "LT";
Stage.addListener(this);
this.onResize = resizeAll;
this.onFullScreen = function(bFull:Boolean)
{
if (bFull == false)
{
resizeAll();
}
};
function resizeAll()
{
if (Stage.width>768) {
obj2._x = obj1._width;
obj3._x = obj1._width+obj2._width+4;
obj4._x = obj6._x+(obj6._width/2)-obj4._width;
obj5._x = (obj6._x+obj4._width)+(obj6._width/2+obj4._width/2)-obj5._width;
obj6._x = obj1._width+obj2._width+obj3._width;
maska._width = Stage.width;
stroke._width = Stage.width-1;
};
if (Stage.width<=768) {
obj2._x = obj1._width;
obj3._x = obj1._width+obj2._width+4;
obj6._x = obj1._width+obj2._width+obj3._width;
maska._width = Stage.width;
stroke._width = Stage.width-1;
};
if (Stage.width>884) {
redtext._x = (obj3._width*2)+10;
bluetext._x = obj2._width+15;
};
if (Stage.width<884) {
redtext._x = (obj3._width*2)-15;
bluetext._x = obj2._width-15;
};
}
Спасибище!!!:)
А если я не восстанавливаю режим, а наоборот жму из фулскрина, есть название для этого?:) on...?
Добавлено через 1 минуту
Вообще сейчас тестирую оч странная ситуация:
1. Флэшка открывается: вид нормальный.
2. Жму фулскрин - криво
3. Ухожу из фулскрина - криво
4. Жму фулскрин - вид нормальный О_О
5. Ухожу из фулскрина - вид нормальный!!!
Елки:)))))
Ну разбирайтесь.
Скорее всего надо поправлять-восстанваливать все и на фулскрин, и корректировать при ресайзе.
А в ответ на ваш вопрос - bFull будет false, когда переход в обычный режим и true - когда в оконный.
Получается нужно написать еще описание одних и тех же параметров два раза под два условия? Наверняка есть способ проще.
При фулскрне видимая область - сцена и ее новое расположение относительно краев монитора - это один случай (зависит от разрешения экрана и пропорций флешки).
При ресайзе в оконном режиме - другие изменения происходят, произвольные, зависящие от желания пользователя, от того как вы опубликовали флешку, видимая область также меняется.
Ну вот тема была:
http://www.flasher.ru/forum/showthread.php?t=107913
Возможно, не ваш случай касательно "криво", но может что-то полезное будет для вас.
Вообще как и что менять - это ваше дело. Функцию же на ресайз вы написали. А я вам просто подсказал, какое событие можно использовать для отслеживания переходов в фулскрин и обратно.
Если будете делать корректировку при переходе в фулскрин - вероятно вам как-то нужно запоминать исходные положения объектов до перехода в фулсрин и восстанавливать их при возврате к оконному режиму.
Т.е. записать возвраты эти в функцию onFullScreen.
Например, при нажатии вашей кнопки или по какому-то вашему событию перехода в фулскрин запоминать исходные положения, размеры если надо, а когда идет возврат, т.е.:
this.onFullScreen = function(bFull:Boolean)
{
if (bFull == false)
{
//делать возврат значений на исходные
}
};
у меня такое ощущение, что он вообще игнорирует все, что касается фулскрина: меняю значения - все то же самое
При переходе в фулскрин вы отслеживаете в функции, когда bFull становится true?
Stage.addListener(this);
this.onFullScreen = function(bFull:Boolean)
{
if (bFull)
{
//действия при переходе во fullScreen
}
else
{
//действия при возврате к normal
}
};
Да, в тестовой среде не проверять! Запускайте саму SWF-ку или из браузера.
Да, я проверяю в браузере.
Писала даже просто трэйс на фулскрин - игнорирует.
Наобум написала вместо onFullScreen
this.onEnterFrame = function () {
resizeAll();
};
работает при фулскрине О_О
На restore down продолжает косячить: не ресайзиться обратно, но все элементы на своих местах
Добавлено через 67 часов 16 минут
и никто мне не скажет, что я поступаю неправильно, да?:)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.