Здавалка
Главная | Обратная связь

Функция fscommand()

Проекторы

Под автономным плеером будем понимать самостоятельную (то есть открывающуюся в отдельном окне) программу Adobe Flash Player.

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

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

При этом у проектора (projector — так принято называть exe-файл, получаемый объединением плеера и SWF-фильма) имеется одно существенное преимущество — он будет работать независимо от того, имеется ли в системе Flash-плеер нужной версии или нет.

Создать проектор очень просто. Это можно сделать даже из автономного плеера (не проектора), проигрывающего фильм, задействовав команду Create Projector меню File. Впрочем, чаще проекторы создаются непосредственно из среды разработки Flash. Чтобы изготовить проектор для платформы Windows (компьютеры Macintosh в нашей стране — экзотика), нужно поставить флажок Windows Projector на закладке Formats окна Publish Settings, указать целевую директорию и нажать кнопку Publish.

Размер проектора складывается из размера плеера и SWF-фильма. Поэтому он не может занимать меньше 950 Кб (это размер плеера в распакованном виде).

Помимо того, что SWF-фильмы, преобразованные в проекторы, не требуют наличия Flash-плеера на машине пользователя, у них имеется еще одно значительное достоинство. Их возможности могут быть сильно расширены при помощи особых утилит. Эти утилиты вводят в код плеера новые фрагменты или удаляют его «лишние» участки, создавая по сути новые программы. Спектр потенциально возможных модификаций плеера очень широк. Например, можно ввести в контекстное меню пункты быстрой прокрутки вперед и назад (этих функций очень не хватает при просмотре анимаций в стандартном плеере). Можно отключить появление контекстного меню (это бывает полезно при создании игр). Можно даже совместить SWF-фильм и документы в формате PDF.

 

Функция fscommand()

 

Функция fscommand()—это «живое ископаемое» ActionScript. Она появилась еще во Flash3 и не устарела до сих пор. Даже в ее названии видится история Flash: приставка «fs» — сокращение от FutureSplash (так называлась программа, из которой выросла Flash). Первоначальную роль, которую разработчики отводили fscommand(), можно охарактеризовать как «взаимодействие с окружением». Основное назначение фукции в ActionScript 3 – управление автономным плеером (она не работает в Web).

Общий синтаксис функции fscommand() следующий:

fscommand("command", "parameters");

где «command» — строка с именем команды, «parameters» — строка с параметром (или параметрами, разделенными запятыми), определяющим, что именно команда должна сделать.

 

 

Команда Аргументы Краткое описание
«allowscale» «true» и «false» Определяет, будут ли изменяться размеры фильма при масштабировании окна плейера
«fullscreen» «true» и «false» Осуществляет переход в полноэкранный режим или выход из него
«quit»   Закрывает окно проигрывателя
«trapallkeys» «true» и «false» Определяет, будут ли перехватываться нажатия служебных клавиш и комбинаций клавиш
«showmenu» «true» и «false» Определяет, будет ли отображаться главное меню и необязательные команды контекстного меню плеера
«exec» Имя приложения Команда запускает приложение на машине пользователя

 

«allowscale» — пользователь всегда может изменить размер окна Flash-плеера (равно как и любого другого Windows-приложения) перемещением одной из границ. При этом по умолчанию изменится область отображения проигрываемого в нем фильма. Подобное масштабирование не всегда приемлемо. Его стоит запрещать в случае анимации, так как анимация, созданная для проигрывания в небольшом окне, при воспроизведении при увеличении будет выглядеть гораздо хуже (а главное, при этом могут проявиться разного рода недоработки («хвостики», промежутки между смыкающимися линиями), на которые вы не обратили внимания, но которые обязательно заметит заказчик). Кроме того, при увеличении области воспроизведения фильма возрастает нагрузка на процессор (ему при этом приходится обрабатывать большую площадь графики), что может привести к снижению частоты смены кадров. Особый случай составляют фильмы, содержащие фотографии или видео. При этом увеличение окна плеера потенциально опасно из-за снижения качества растра до проявления отдельных пикселей. Перейти в режим, при котором изменение размеров окна плеера не будет сопровождаться масштабированием фильма, можно, набрав следующую строку:

fscommand("allowscale", "true");

К сожалению, нельзя запретить изменение размеров окна автономного плеера.

Кстати, в случае фильмов, встроенных в HTML-страницы, проблемы, связанные с изменением размеров окна плеера, не стоят так остро, как в случае фильмов, воспроизводимых в автономном плеере. Дело в том, что при изменении размеров окна браузера величина области, отведенной под SWF-фильм, не меняется.

 

«fullscreen» — полноэкранный режим имеется у многих приложений. В случае автономного Flash-плеера данный режим характеризуется тем, что в нем область отображения фильма занимает весь экран. Главное меню, заголовок и границы окна плеера в полноэкранном режиме не визуализируются.

Перейти в полноэкранный режим можно с помощью команды

fscommand("fullscreen", "true");

 

Перевести фильм, проигрываемый в автономном плеере, в полноэкранный режим может и пользователь, выполнив команду View → Full Screen главного меню плеера (или просто нажав Ctrl + F).

Полноэкранный режим очень часто используется в случае презентаций, заставок компакт-дисков, заставок Windows, несетевых игр — в общем, проектов, которые обычно создаются в формате *.exe и распространяются на дисках или дискетах. Однако злоупотреблять им не стоит, так как многие пользователи крайне не доверяют полноэкранному режиму.

Собираясь использовать полноэкранный режим, важно так выбрать размеры для фильма, чтобы его ширина и высота соотносились так же, как ширина и высота монитора (благодаря масштабируемости векторной графики важна лишь пропорциональность фильма и области экрана, но не точное совпадение их размеров). Иначе (в зависимости от того, какой режим масштабирования активен) или будет визуализирована зона, прилежащая к стандартной области отображения фильма, или возникнут искажения, или часть фильма будет обрезана. На обычных мониторах ширина относится к высоте как 4:3 (в зависимости от разрешения область экрана может составить 640480, 800600, 1024768, 16001200 точек). Качественные широкоэкранные мониторы имеют другое соотношение ширины и высоты, но они встречаются столь редко, что их стоит учитывать лишь в особых случаях.

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

 

«quit»—конечно, закрыть окно автономного Flash-плеера можно, нажав стандартную кнопку в его правом верхнем углу или командой File→Exit главного меню. Но что, если фильм проигрывается в полноэкранном режиме? Пользователь может просто не знать, как выйти из такого режима. Очевидно, что зачастую бывает необходимо вводить в интерфейс проектов элемент, позволяющий закрыть окно плеера. Например, в реализованном нами в главе 6 тетрисе имелась кнопка Exit.

Динамически закрыть окно автономного плеера можно, набрав следующую команду:

fscommand("quit");

 

«trappalkeys» — у Flash-плейера, как и у любого приложения, имеется набор «горячих» клавиш. Например, нажав Esc, можно выйти из полноэкранного режима, Ctrl + Enter — начать воспроизведение, Ctrl + O — открыть новый фильм. Информация о нажатии «горячих» клавиш (да и вообще всех сочетаний с клавишей Ctrl) считается служебной и в фильм не передается. Но если вы создаете сложную игру, в которой используется множество сочетаний, то комбинации с Ctrl или Esc могут вам понадобиться. Чтобы сообщения об их нажатии поступали в фильм, нужно блокировать поддержку «горячих» клавиш. Для этого следует набрать

fscommand("trapallkeys", "true");

 

«showmenu» — многие команды главного и контекстного меню Flash-плеера потенциально небезопасные. Например, ваш проект может состоять из нескольких частей, распределенных по разным кадрам (в случае игры это может быть заставка, страница настроек и основная часть). Переход между этими кадрами должен осуществляться только командами кода. Но пользователь нечаянно или из эксперимента может задействовать какую-то из команд навигации главного или контекстного меню. При этом произойдет переход между частями проекта, не предусмотренный в алгоритме. Естественно, что это, скорее всего, полностью собьет работу кода. Чтобы этого не произошло, необходимо убрать опасные команды главного и контекстного меню. Это можно сделать следующей строкой:

fscommand("showmenu", "false");

 

Приведенная команда полностью убирает главное меню, но в контекстном меню оставляет две команды: Settings и About Adobe Flash Player. Убрать и их можно только при условии применения дополнительных утилит. Использование функции fscommand()—исторически самый первый, но не самый лучший способ скрытия главного и контекстного меню. Убрать отдельные команды из контекстного меню позволяет класс ContextMenu (правда, данный класс не управляет главным меню, поэтому этот подход не применим в случае фильмов, проигрывающихся автономным плеером).

 

«exec» — довольно часто при помощи Flash создают красочные оболочки для сборников программ или игр. В них нажатие обычной кнопки вызывает запуск файла установки необходимого приложения. Это кажется почти фантастикой, но, чтобы реализовать эту возможность, достаточно одного лишь ActionScript.

Уже в первых версиях Flash можно было запускать командой из проектора exe-приложение. Для этого у функции fscommand() имеется специальная команда «exec».

Запуск exe-приложения — далеко не безопасная операция, поэтому команда «exec» может быть задействована только при соблюдении следующих ограничений:

- запустить приложение можно только из проектора. Если же SWF-фильм был просто открыт в автономном Flash-плейере, то команда «exec» не сработает;

- запускаемое приложение должно располагаться в специально созданной папке fscommand в той же директории, к которой относится запускающий его проектор. То есть запустить Word или «Блокнот» на машине пользователя, используя команду «exec», вряд ли получится.

Общий синтаксис функции fscommand() для команды «exec» следующий:

fscommand("exec", "someApplication.exe");

где "someApplication.exe" — подлежащее запуску приложение из директории fscommand. То есть использовать абсолютный или относительный путь к приложению в качестве второго аргумента fscommand() не нужно, только его имя. Чтобы функция fscommand() могла запустить приложение, его имя должно быть образовано только буквами, цифрами, пробелами, точками, запятыми и знаками подчеркивания. Имя исполняемого файла может состоять из символов латинского алфавита, цифр и знака подверкивания.

До Flash MX команда «exec» позволяла запустить любое приложение на машине пользователя. Соответственно, в качестве второго параметра fscommand() передавался путь (абсолютный или относительный) к нужному exe-файлу. Однако затем требования безопасности усилились, поэтому сейчас команда «exec» дает возможность запускать только приложения, хранящиеся лишь в одной отдельной директории.

 

Замечание. Полный функционал использования fscommand доступен только из проекторов. В режиме тестирования фильма работают только allowscale и exec.

 

Замечание. Помимо .exe-файлов, функция fscommand способна запустить на выполнение командный файл с расширением .com, который может содержать необходимые для запуска внешний файлов команды.

 

 

Открыть exe-файл можно и другим способом. Пример, показанный ниже, открывает стандартное приложение Windows – калькулятор. В примере btn – имя клипа, после щелчка по которому должна открыться программа.

 

 

import flash.net.URLRequest;

import flash.net.navigateToURL;

 

btn.addEventListener(MouseEvent.CLICK, btnClick);

 

function btnClick(_event:MouseEvent)

{

var url:URLRequest = new URLRequest("file:///C:/WINDOWS/system32/calc.exe");

navigateToURL(url);

}

 

 

Но есть ограничения на запуск исполнимых файлов таким способом – в момент активации функции пользователю выдается запрос, действительно ли он хочет открыть файл. Пользователь может отключить этот запрос, но это может быть небезопасным.

Но таким способом можно открывать документы самых разных форматов (например, *.doc, *.pdf, *chm и другие).

 

Ссылка на почтовый ящик: mailto: mail@mail.com

 

 





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.