Форум 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)
-   -   Fullscreen+restore down и резиновые баннеры (http://www.flasher.ru/forum/showthread.php?t=147922)

Ogat 17.12.2010 12:41

Fullscreen+restore down и резиновые баннеры
 
Сделала резиновый баннер. Все работает прекрасно, но когда проверяю его в браузере начинается глюк: нажимаю на фулскрин и рестор даун, элементы оказываются на кривых местах, все исправляется путем ресайза. Но мне нужно, естественно, чтобы все всегда было на своих местах. Возможно есть еще какая-то функция, кроме onResize? Как правильно подойти к этому?

Код AS1/AS2:

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);

Я извиняюсь, если вопрос тупой, но я дуб:)

mooncar 17.12.2010 13:11

Есть такая функция. Точнее событие, которое можно обработать.
Выполняйте то, что у вас выполняется на onResize, также при выполнении восстановления оконного режима. Отследить переход к обычному показу можно с помощью соотв. обработчика
Код AS1/AS2:

onFullScreen = function(bFull:Boolean) {}

т.е. bFull когда становится false.

Попробуйте:
Код AS1/AS2:

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;               
        };               
}


Ogat 17.12.2010 13:39

Спасибище!!!:)
А если я не восстанавливаю режим, а наоборот жму из фулскрина, есть название для этого?:) on...?

Добавлено через 1 минуту
Вообще сейчас тестирую оч странная ситуация:
1. Флэшка открывается: вид нормальный.
2. Жму фулскрин - криво
3. Ухожу из фулскрина - криво
4. Жму фулскрин - вид нормальный О_О
5. Ухожу из фулскрина - вид нормальный!!!
Елки:)))))

mooncar 17.12.2010 14:03

Ну разбирайтесь.
Скорее всего надо поправлять-восстанваливать все и на фулскрин, и корректировать при ресайзе.

А в ответ на ваш вопрос - bFull будет false, когда переход в обычный режим и true - когда в оконный.

Ogat 17.12.2010 14:26

Получается нужно написать еще описание одних и тех же параметров два раза под два условия? Наверняка есть способ проще.

mooncar 17.12.2010 14:33

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

Ну вот тема была:
http://www.flasher.ru/forum/showthread.php?t=107913
Возможно, не ваш случай касательно "криво", но может что-то полезное будет для вас.

Вообще как и что менять - это ваше дело. Функцию же на ресайз вы написали. А я вам просто подсказал, какое событие можно использовать для отслеживания переходов в фулскрин и обратно.

Если будете делать корректировку при переходе в фулскрин - вероятно вам как-то нужно запоминать исходные положения объектов до перехода в фулсрин и восстанавливать их при возврате к оконному режиму.
Т.е. записать возвраты эти в функцию onFullScreen.
Например, при нажатии вашей кнопки или по какому-то вашему событию перехода в фулскрин запоминать исходные положения, размеры если надо, а когда идет возврат, т.е.:
Код AS1/AS2:

this.onFullScreen = function(bFull:Boolean) 
{
        if (bFull == false)
        {
                //делать возврат значений на исходные
        }
};


Ogat 17.12.2010 15:25

у меня такое ощущение, что он вообще игнорирует все, что касается фулскрина: меняю значения - все то же самое

mooncar 17.12.2010 15:46

При переходе в фулскрин вы отслеживаете в функции, когда bFull становится true?

Код AS1/AS2:

Stage.addListener(this);
 
this.onFullScreen = function(bFull:Boolean)
{
 
        if (bFull)
        {
                //действия при переходе во fullScreen
        }
        else
        {
                //действия при возврате к normal
        }
};

Да, в тестовой среде не проверять! Запускайте саму SWF-ку или из браузера.

Ogat 17.12.2010 16:27

Да, я проверяю в браузере.
Писала даже просто трэйс на фулскрин - игнорирует.
Наобум написала вместо onFullScreen
Код AS1/AS2:

this.onEnterFrame = function () {
        resizeAll();
};

работает при фулскрине О_О
На restore down продолжает косячить: не ресайзиться обратно, но все элементы на своих местах

Добавлено через 67 часов 16 минут
и никто мне не скажет, что я поступаю неправильно, да?:)


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

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