PDA

Просмотр полной версии : Как сделать fullscreen условием?


Seraf
11.06.2010, 22:55
Не додумался иначе назвать тему.
В общем, проблема такая. Есть фильм что идёт по кругу. Хочу сделать 2 различные по внешнему виду кнопки: "fullscreen on" и "fullscreen off".
При этом чтобы в зависимости от режима экрана отображалась только нужная кнопка. Например, если делаю фуллскрин кнопка закрыть появлялась а открыть - исчезала.
Я на кнопки написал:

on (release)
{
fscommand ("fullscreen", false);
_root.but1._visible=false;
_root.but2._visible=true;

Всё работает но когда при фулскрине доходит до 1-го кадра кнопка "fullscreen off" исчезает. В нём прописано чтобы закрывающая кнопка была невидимая.
В начале фильма же мне нужно чтобы "on" была видимая, а "off" - невидимая.



Пытаюсь создать условие для видимости кнопок в 1-м кадре но чтобы не прописывал в if () ничего не отключает видимость кнопки off.
Пытался и if (fscommand ("fullscreen", false)) {...
и if (fullscreen == false)) {...
также if (fscommand("fullscreen") == false) {...
ничего не работает :(
Пол дня копаюсь как же сделать так чтобы мувик распознал состояние фулскрина в 1-м кадре и сделать это условием для отображения кнопки.
Догадываюсь, что есть масса способов как решить пролему иначе но меня интересует именно этот способ.
Спасибо.

eagregat
12.06.2010, 01:23
Отключить fullscreen средствами AS невозможно. Необходимо, чтобы юзер нажал esc.
Иначе, никак. Это азбука.

Seraf
12.06.2010, 01:49
хм... какраз как отключить я знаю и на кнопке off у меня висит:
on (release)
{ fscommand ("fullscreen", false);
_root.but1._visible=false;
_root.but2._visible=true;
}

Мне нужно определние текущего значения fullscreen в 1-м кадре и использовать его как условие для отображения/скрытия видимости объекта.

То есть, если в 1-м кадре в начальном кадре нет никакого фулскрина, то кнопка "fullscreen off" должна быть невидимой. Но если уже при включенном fullscreen мувик опять вернулся на этот 1-й кадр то конечно не должен скрывать эту кнопку.

В общем, в 1-м кадре обект должен скрываться только когда обычный режим отображения (не fullscreen).

mooncar
12.06.2010, 02:03
Чаще заглядывайте в хелп, он есть. Есть такой обработчик классный - Stage.onFullScreen handler,
его как раз и нужно использовать для отслеживания изменения режима:
var stageListener:Object = new Object();
Stage.addListener(stageListener);
stageListener.onFullScreen = fScreen;

function fScreen(full:Boolean)
{
if (full) //вот оно, ваше условие
{
//действия для режима полного экрана,
//например видимость кнопки включения обычного режима
}
else
{
//действия для нормального режима
//например видимость кнопки включения режима полного экрана
}
}
Сам его в плеерах использую и вам советую.
И завязывайте писать код на кнопках, это неприлично и самое главное, неудобно.
Зачем вам больше одного кадра, объясните ради бога...

Seraf
12.06.2010, 02:18
Задача сделать презентационный мувик который будут крутить на плазме локально с компа всякие девочки продавцы совсем не сведущие во флеш. Вот и хочу для них сделать кнопки входа и выхода в режимы.
Пытаюсь делать как могу ибо я художник а не программер.
Спасибо за код но он пока не работает. Повесил его в 1-м кадре. По-идее если нет фулскрина он должен скрывать кнопку "off" но файл запускается с 2-мя и off и on.

ps swf файл я открываю из папки

mooncar
12.06.2010, 02:21
Значит, неправильно используете. Он "работает". Секундочку... пример будет.

mooncar
12.06.2010, 02:39
Смотрите как нужно.
Можно еще проще сделать, но я постарался не проще, а понятнее, это не одно и то же.
Содержимое кладите и управляйте им внутри большого мувика (с фоном который), используйте его таймлайн.
Так будет правильно.

PS. Естественно, тестим вне программы, запускаем уже скомпилированную флешку.

mooncar
12.06.2010, 02:45
Отключить fullscreen средствами AS невозможно. Необходимо, чтобы юзер нажал esc.
Иначе, никак. Это азбука.
Ну зачем же так категорично. Совсем обязательно нажимать ESC, по-вашему как тогда этот режим закрывается с рисованных кнопок во всех плеерах, где они предусмотрены? (В том числе и в браузерной флешке). :)
Более того, режим может быть включен и выключен автоматически, с таймлайна.
Смотрите пример auto_fullscree.

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

Seraf
12.06.2010, 03:05
Спасибо. Это стоит использовать. Насчёт того, что код будет мне полностью понятен Вы конечно погорячились. Пока всё где присутствует "var" - для меня тёмный лес.
Вы показали как я писал в 1-м посте "другой" более крутой метод.
Нельзя ли просто в 1-м кадре написать какойто командой типа:
if (fscommand("fullscreen") == false) то видимость кнопки = false?
Без переменных "для чайников"....

mooncar
12.06.2010, 03:13
Так в языке записать нельзя. У вас так ничего не проверится.
Собственно, условие проверки полноэкранности, еще раз, повторюсь без var :)
stageListener= new Object(); //этот новый объект
Stage.addListener(stageListener); //этот объект будет теперь слушать состояние сцены
stageListener.onFullScreen = function (full) //обработка событий слушателя при изменени режима полный/нормальный
{
if (full) //вот оно, ваше условие: если состояние аргумента функции обработчика истинно, то есть если у нас полный экран
{
//действия для режима полного экрана,
//например видимость кнопки включения обычного режима
}
else //иначе
{
//действия для нормального режима
//например видимость кнопки включения режима полного экрана
}
}

Добавлено через 2 минуты
Можно еще проще (для записи, но не для понимания):
Stage.addListener(this); //теперь слушать состояние сцены будет сам текущий объект (таймлайн)
this.onFullScreen = function (full)
{
if (full)
{
//действия для режима полного экрана,
//например видимость кнопки включения обычного режима
}
else
{
//действия для нормального режима
//например видимость кнопки включения режима полного экрана
}
}


Конечно, можно все явно задать, если понимание "слушателя" сложно:
var fullScr:Boolean = false ; //следим с помощью флага за состоянием полнооэкранности
fsb.onRelease = function() { //при нажатии:
if (!fullScr) //если состояние флага = false, то есть у нас норм. режим сейчас, тогда
{
Stage.displayState = 'fullscreen'; //включаем полный режим
fsb.btn_norm._visible = true ; //управление видимостью содержимого кнопки
fsb.btn_full._visible = false ;
fullScr = true ; //переключаем флаг
}
else //если состояние флага = true, то есть если у нас сейчас полный экран
{
Stage.displayState = 'normal'; //тогда включаем нормальный режим
fsb.btn_norm._visible = false ;
fsb.btn_full._visible = true ;
fullScr = false ; //переключаем флаг
}
};
Просто вы хотели именно проверку условия, а тут идут наборами прямых директив - все, что надо делать при одном случае, что при другом. То есть именно проверки полноэкранности не происходит, тут просто проверяем для удобства, в каком состоянии находится флаг fullScr