Полноэкранный режим поддерживался раньше только в stand-alone плеере и projector файлах. Теперь добавлена возможность использования полноэкранного режима в plug-in и ActiveX версиях плеера. Полноэкранный режим не поддерживается для режимов windowless и transparent. Если пользователь использует несколько мониторов, то Flash Player определяет, какой монитор показывает наибольшую часть фильма и включает полноэкранный режим для этого монитора.
Для использования этого режима должен быть установлен плеер версии 9,0,18,60 или выше. На Intel Macs текущая версия плеера 9,0,20,0, но для использования режима должна быть 9,0,18,60.
Для использования полноэкранного
режима необходимо добавить новый параметр тегов <object> и
<embed> allowFullScreen в HTML код. По умолчанию
он является false, что не поддерживает полноэкранный
режим. Для его включения необходимо задать allowFullScreen
равным true в <object>/<embed> тегах.
Поверх всего при полноэкранном режиме возникнет диалоговое окно, показывающее как выйти из этого режима. Через несколько секунд окно исчезнет.
ActionScript код, инициализирующий полноэкранный режим, может быть вызван только в ответ на нажатие клавиши или мыши. В остальных ситуациях он будет проигнорирован.
Пользователи не могут вводить текст в полноэкранном режиме. Все клавиатурные события отключены в этом режиме, кроме клавиш выхода из этого режима.
Эти ограничения относятся к plug-in и ActiveX версиях, но не к stand-alone плееру или projector файлам.
Появилось несколько новых ActionScript методов в ActionScript 2.0 и ActionScript 3.0 для включения и выключения полноэкранного режима и соответствующих событий, оповещающих о начале или конце данного режима.
Stage.displayState:String property
Это свойство можно прочитать и установить. Возможные значения:
fullScreen
normal
Свойство используется для проверки текущего режима фильма для перехода или выхода из полноэкранного режима.
Слушатель события объекта Stage обеспечивает оповещение при переходе или выходе из данного режима:
EventListener.onFullScreen = function( bFull:Boolean ){}
Stage.addListener( EventListener );
Аргумент типа Boolean показывает, находится ли фильм в полноэкранном
режиме (true) или нет (false).
flash.display.Stage.displayState:String property
Это свойство можно прочитать и установить. Возможные значения:
StageDisplayState.FULL_SCREEN
Stage.DisplayState.NORMAL
Свойство используется для проверки текущего режима фильма для перехода или выхода из полноэкранного режима.
Слушатель события объекта Stage обеспечивает оповещение при переходе или выходе из данного режима:
fullScreenHandler = function( event:FullScreenEvent ) {};
stage.addEventListener( FullScreenEvent.FULL_SCREEN, fullScreenHandler );
Событие AS3 FullScreenEvent, расширяющее ActivityEvent.
FullScreenEvent имеет атрибут типа Boolean fullScreen,
показывающее, находится ли фильм в полноэкранном режиме (true)
или нет (false).
ActionScript 3.0 сгенерирует ошибку безопасности в plug-in или ActiveX версиях, если вышеперечисленные условия безопасности не будут соблюдены, а состояние будет установлено как StageDisplayState.FULL_SCREEN.
Чтобы использовать новую возможность, необходимо обновить установленную версию Flash Professional или Flex.
Файлы для обновления находятся в этом zip архиве.
Если используется ActionScript 3.0 с preview-релизом Flash Professional 9, необходимо перезаписать файл playerglobal.abc из архива в папку установки Flash 9:
Flash 9 Public Alpha/en/Configuration/ActionScript
3.0/playerglobal.abc
Для использования нового ActionScript с Flex или Flex Builder, необходимо обновить Flex SDK. Скопируйте playerglobal.swc в папку:
Flex Builder 2/Flex SDK
2/frameworks/libs/playerglobal.swc
Если используется ActionScript 2.0 необходимо вручную отредактировать класс Stage.as, который находится в папке:
Flash 8/First Run/Classes/FP8/Stage.as
Добавьте новое свойство:
static var displayState:String;
В противном случае пришлось бы использовать плохой синтаксис:
Stage["displayState"] = "fullScreen";
а так намного лучше:
Stage.displayState = "fullScreen";
Поведение при масштабировании зависит от параметра scaleMode в
ActionScript или в тегах <object> и <embed>. По умолчанию
scaleMode равен showAll, то есть при
полноэкранном режиме фильм будет растянут на весь экран при поддержке
пропорций. Если необходимо поддерживать масштабирование программно,
то следует установить scaleMode равным noScale.
Это улучшит производительность при просмотре видео на медленных машинах, так как просмотр в полный экран требует больших ресурсов.
Для выхода из полноэкранного режима используются Escape (Windows и Mac OS), Control+W (Windows), Command+W (Mac OS) и Alt+F4 (Windows).
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,18,0" width="600" height="400" id="fullscreen" align="middle"> <param name="allowFullScreen" value="true" /> <param name="movie" value="fullscreen.swf" /> <param name="bgcolor" value="#333333" /> <embed src="fullscreen.swf" allowFullScreen="true" bgcolor="#333333" width="600" height="400" name="fullscreen" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object>
Чтобы автоматически публиковать HTML файл фильма с поддержкой полноэкранного режима, необходимо скопировать файл из архива Flash_with_FullScreen.html в папку темплейтов:
Flash 8/en/First Run/HTML/
Перезапустите Flash. В Publish Settings вкладке HTML выберите "Flash with Full Screen Support."
В файлы обновлений добавлены HTML-шаблоны для использования во Flex Builder. Это модифицированные версии шаблонов "express-installation" и "express-installation-with-history".
Чтобы использовать эти шаблоны, необходимо
Удалить все файлы из папки "html-template" проекта.
Скопировать файлы из папки "full-screen-support" или "full-screen-support-with-history" в папку "html-template" проекта.
В качестве примера показаны приложения, в которых добавлен элемент FullScreen, с помощью которого можно перейти в полноэкранный режим и выйти из него, в контекстное меню мувика. Создайте какой-нибудь мувиклип mc и добавьте следующий ActionScript в первй кадр:
// функции входа и выхода в/из режима
function goFullScreen()
{
Stage["displayState"] = "fullScreen";
}
function exitFullScreen()
{
Stage["displayState"] = "normal";
}
// функции включения/выключения элементов контекстного меню
function menuHandler(obj, menuObj)
{
if (Stage["displayState"] == "normal")
{
// если мы в нормальном режиме, добавляем элемент 'go full screen' и убираем 'exit'
menuObj.customItems[0].enabled = true;
menuObj.customItems[1].enabled = false;
}
else
{
// иначе - наоборот
menuObj.customItems[0].enabled = false;
menuObj.customItems[1].enabled = true;
}
}
// создаем новое контекстное меню
var fullscreenCM:ContextMenu = new ContextMenu(menuHandler);
// скрываем встроенные элементы
fullscreenCM.hideBuiltInItems();
// добавляем элемент для перехода в контекстное меню
var fs:ContextMenuItem = new ContextMenuItem("Go Full Screen", goFullScreen);
fullscreenCM.customItems.push( fs );
var xfs:ContextMenuItem = new ContextMenuItem("Exit Full Screen", exitFullScreen);
fullscreenCM.customItems.push( xfs );
// прикрепляем меню к мувиклипу или куда-нибудь еще
_root.menu = fullscreenCM;
import flash.display.Stage;
import flash.display.StageDisplayState;
import flash.display.InteractiveObject.*;
import flash.events.*;
// функции входа и выхода в/из режима
function goFullScreen(event:ContextMenuEvent):void
{
stage.displayState = StageDisplayState.FULL_SCREEN;
}
function exitFullScreen(event:ContextMenuEvent):void
{
stage.displayState = StageDisplayState.NORMAL;
}
// функции включения/выключения элементов контекстного меню
function menuHandler(event:ContextMenuEvent):void
{
if (stage.displayState == StageDisplayState.NORMAL)
{
event.target.customItems[0].enabled = true;
event.target.customItems[1].enabled = false;
}
else
{
event.target.customItems[0].enabled = false;
event.target.customItems[1].enabled = true;
}
}
var fullscreenCM:ContextMenu = new ContextMenu();
fullscreenCM.addEventListener(ContextMenuEvent.MENU_SELECT, menuHandler);
fullscreenCM.hideBuiltInItems();
var fs:ContextMenuItem = new ContextMenuItem("Go Full Screen" );
fs.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goFullScreen);
fullscreenCM.customItems.push( fs );
var xfs:ContextMenuItem = new ContextMenuItem("Exit Full Screen");
xfs.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, exitFullScreen);
fullscreenCM.customItems.push( xfs );
mc.contextMenu = fullscreenCM;
Опубликуйте и запустите фильм. Вызовите контекстное меню и проверьте правильность перехода и выхода в/из режима. Запомните, что:
Необходим плеер версии 9,0,18,60 или выше. На Intel Macs - 9,0,18,60.
Не забывайте, что параметр тегов <object>/<embed>
allowFullScreen должен быть true.