Продолжим тему полноэкранного режима flash-плеера, но теперь рассмотрим вывод на весь экран не всего флеш-ролика, а только определённой области на сцене флеш-ролика. Да, такое тоже возможно осуществить средствами ActionScript 3.0. Делается это с помощью свойства fullScreenSourceRect класса Stage. При этом свойству fullScreenSourceRect в качестве значения передаётся область, которую надо вывести на весь экран.
Давайте для примера выведем на весь экран область флеш-ролика, которая будет иметь размеры 300 X 150 и координаты (50,50). Для большей наглядности я выделил данную область красной рамкой (смотри расположенный ниже флеш-ролик).
Код ActionScript 3.0:
/*
кнопка перехода в полноэкранный режим
*/
btn.addEventListener(MouseEvent.CLICK,onFullScreenFlash);
function onFullScreenFlash(event:MouseEvent):void
{
/*
если флеш-плеер в данный момент не находится в полноэкранном режиме
*/
if (stage.displayState == StageDisplayState.NORMAL)
{
/*
выводим на весь экран заданную область флеш-ролика
*/
stage.fullScreenSourceRect = new Rectangle(50,50,300,150);
/*
переходим в полноэкранный режим
*/
stage.displayState = StageDisplayState.FULL_SCREEN;
}
/*
иначе
*/
else
{
/*
выходим из полноэкранного режима
*/
stage.displayState = StageDisplayState.NORMAL;
}
}
Основная часть кода взята из предыдущего поста и второй раз её рассматривать не будем. Отличие здесь заключается именно в применении свойства fullScreenSourceRect. Этому свойству присваивается экземпляр класса Rectangle, у которого четыре параметра:
- положение масштабируемой области по оси x;
- положение масштабируемой области по оси y;
- ширина масштабируемой области;
- высота масштабируемой области.
Высота и ширина масштабируемой области имеют ограничения по размерам, но, по заверениям разработчиков, эти ограничения могут быть разными в разных флеш-плеерах. В любом случае, отмасштабировать очень маленькую область не получится - проверено на практике.
А теперь наглядный пример:
Нажмите на рисунок лупы, чтобы увеличить/уменьшить выделенную область флеш-ролика.
Естественно, можно в качестве области масштабирования указать весь экран флеш-ролика.
Код ActionScript 3.0:
/*
кнопка перехода в полноэкранный режим
*/
btn.addEventListener(MouseEvent.CLICK,onFullScreenFlash);
function onFullScreenFlash(event:MouseEvent):void
{
/*
если флеш-плеер в данный момент не находится в полноэкранном режиме
*/
if (stage.displayState == StageDisplayState.NORMAL)
{
/*
выводим на весь экран заданную область флеш-ролика
*/
stage.fullScreenSourceRect = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);
/*
переходим в полноэкранный режим
*/
stage.displayState = StageDisplayState.FULL_SCREEN;
}
/*
иначе
*/
else
{
/*
выходим из полноэкранного режима
*/
stage.displayState = StageDisplayState.NORMAL;
}
}
Зачем это надо? Ну, по заверениям разработчиков, этот способ полноэкранного вывода флеш-ролика более быстрый и менее ресурсоёмкий.
Исходник под Adobe Flash CS5.5 и html-код вставки скачать можно здесь.
Примечания:
[!] У меня упорно не хотело работать Esc для выхода из полноэкранного режима. Причины я так и не понял. Впрочем, сочетание клавиш Alt + F4 работало исправно.