Главная / Action Script 3

В пакете flash.system содержится одна функция уровня пакета fscommand(), которая облегчает процесс обмена данными между SWF-файлом и его контейнером.
Общедоступные методы
 ФункцияОпределено
  
fscommand(command:String, args:String = ""):void
Обеспечивает взаимодействие SWF-файла с проигрывателем Flash Player или программой, содержащей Flash Player, например веб-обозревателем.
flash.system
Сведения о функции
fscommand()функция
public function fscommand(command:String, args:String = ""):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Обеспечивает взаимодействие SWF-файла с проигрывателем Flash Player или программой, содержащей Flash Player, например веб-обозревателем. Чтобы передать сообщения в Director или в Visual Basic, Visual C++ и другие программы, способные вмещать управляющие элементы ActiveX, можно также использовать функцию fscommand().

Функция fscommand() обеспечивает взаимодействие SWF-файла со сценарием на веб-странице. Но доступ к сценариям контролируется параметрами allowScriptAccess для веб-страниц. (Этот атрибут устанавливается в коде HTML, встроенном в SWF-файл. Например, в тег PARAM для Internet Explorer или тег EMBED для Netscape.)

Можно запретить использование SWF-файлом этого метода путем установки параметра allowNetworking для тегов object и embed на странице HTML, содержащей SWF-содержимое.

Функция fscommand() не разрешена, если вызывающий SWF-файл находится вне локальной файловой системы или изолированной сетевой среды, а содержащая его страница HTML находится не в доверенной изолированной среде.

Дополнительные сведения по обеспечению безопасности см. в следующих источниках.

Применение 1: чтобы использовать функцию fscommand() для отправки сообщения проигрывателю Flash Player, необходимо использовать предварительно определенные команды и параметры. В следующей таблице показаны значения, которые можно указать для передаваемых с функцией fscommand() параметровcommand и args. Эти значения управляют SWF-файлам, воспроизводимыми в проигрывателе Flash Player, включая проекторы. (Проектором называют SWF-файл, сохраненный в формате, который позволяет выполнять его в автономном приложении, то есть, не используя проигрыватель Flash Player.)

КомандаПараметр (args)Цель
quitНе заданоЗакрывает проектор.
fullscreentrue или falseУстановка значения true переводит проигрыватель Flash Player в полноэкранный режим работы. Установка значения falseвозвращает проигрыватель в обычный режим работы с отображением меню.
allowscaletrue или falseУстановка значения false задает режим проигрывателя, в котором SWF-файл всегда воспроизводится в окне исходного размера и никогда не масштабируется. Установка значения true заставляет SWF-файл масштабироваться в проигрывателе до 100%.
showmenutrue или falseУстановка значения true включает полный набор команд в контекстное меню. Установка значения false скрывает все команды контекстного меню за исключением пунктов "О Flash Player" и "Параметры".
execПуть к приложению Выполняет приложение из проектора.
trapallkeystrue или falseУстановка значения true отправляет все связанные с клавишами события, включая клавиши быстрого вызова, обработчику onClipEvent(keyDown/keyUp) в проигрывателе Flash Player.

Не все из перечисленных в таблице команд доступны во всех приложениях.

Команда exec может содержать только символы A-Z, a-z, 0-9, точку (.) и подчеркивание (_). Команда exec выполняется только в подкаталоге fscommand. Другими словами, если для вызова приложения используется команда exec, это приложение должно находиться в подкаталоге с названием fscommand. Команда exec работает только из файла проектора Adobe Flash.

Применение 2: чтобы использовать функцию fscommand() для отправки сообщения с использованием языка сценариев, например JavaScript в веб-обозревателе, можно передать любые два параметра, используя параметрыcommand и args. Эти параметры могут быть строками или выражениями, они используются в функции JavaScript, которая обрабатывает или перехватывает функцию fscommand().

В веб-обозревателе функция fscommand() вызывает функцию JavaScript moviename_DoFScommand, которая находится на веб-странице, содержащей SWF-файл. Для moviename укажите имя объекта Adobe Flash, используемого в качестве атрибута NAME для тега EMBED или свойства ID тега OBJECT. Если SWF-файлу назначается имя myMovie, вызывается функция JavaScript myMovie_DoFScommand.

На веб-странице, содержащей SWF-файл, установите атрибут allowScriptAccess, разрешив или запретив возможность доступа к веб-странице из этого SWF-файла, как описано выше. (Этот атрибут устанавливается в коде HTML, встроенном в SWF-файл. Например, в тег PARAM для Internet Explorer или тег EMBED для Netscape.)

В приложении Flash Player 10 и более поздней версии, запущенном в обозревателе, при использовании этого метода в программных средствах открытие всплывающего окна может не выполняться. Различные обозреватели (и конфигурации обозревателей) могут блокировать всплывающие окна в любое время; невозможно гарантировать, что какое-либо всплывающее окно будет отображаться. Однако для повышения вероятности открытия всплывающего окна используйте этот метод только в коде, который выполняется в качестве непосредственного результата действия пользователя (например, в обработчике событий для события щелчка мышью или нажатия клавиши).

Применение 3: функция fscommand() может отправлять сообщения в программу Director (Adobe Macromedia Director). Эти сообщения интерпретируются в Lingo (языке сценариев, используемом в Director) как строки, события или выполняемый код Lingo. Если сообщение является строкой или событием, необходимо написать код Lingo для получения сообщения из функции fscommand() и выполнить это действие в Director. Дополнительные сведения см. в центре поддержки Director по адресу www.adobe.com/support/director/.

Применение 4: в VisualBasic, Visual C++ и других программах, в которых можно размещать управляющие элементы ActiveX, функция fscommand() отправляет событие VB с двумя строками, которые могут обрабатываться языком программирования, используемом в среде. Дополнительные сведения можно найти по ключевым словам "Flash method" в центре поддержки Adobe Flash по адресу www.adobe.com/support/flash/.

Примечание. Класс ExternalInterface обеспечивает лучшую функциональность для взаимодействия между JavaScript и ActionScript (Применение 2), а также между ActionScript и VisualBasic, Visual C++ или другими программами, которые могут содержать управляющие элементы ActiveX (Применение 4). Необходимо продолжать использовать функцию fscommand() для отправки сообщений в проигрыватель Flash Player (Применение 1) и программу Director (Применение 3).

Параметры

command:String — Строка, переданная главному приложению в различных целях, или команда, переданная проигрывателю Flash Player.
 
args:String (default = "") — Строка, переданная главному приложению в различных целях, или значение, переданное проигрывателю Flash Player.


Выдает
Error — Если вызов функции не выполняется в ответ на действие пользователя, такое как событие мыши или нажатие клавиши.

Пример

В следующем примере показано, как функция fscommand() может использоваться для перевода проигрывателя Flash Player в полноэкранный режим работы и разрешения масштабирования. Затем к рабочей области добавляется оранжевый прямоугольник с помощью методаdraw(). В методе draw(), добавляется прослушиватель события click с именем clickHandler(), который реагирует на события click, вызывая завершение работы Flash Player с помощью другого обращения к функции fscommand().

Примечание. Этот пример должен выполняться в автономном проигрывателе Flash Player, но не в веб-обозревателе.

package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.system.fscommand;
    import flash.events.MouseEvent;

    public class FSCommandExample extends Sprite {
        private var bgColor:uint = 0xFFCC00;
        private var size:uint = 100;

        public function FSCommandExample() {
            fscommand("fullscreen", "true");
            fscommand("allowscale", "false");
            draw();
        }

        private function clickHandler(event:MouseEvent):void {
            fscommand("quit");
            trace("clickHandler");
        }

        private function draw():void {
            var child:Sprite = new Sprite();
            child.graphics.beginFill(bgColor);
            child.graphics.drawRect(0, 0, size, size);
            child.graphics.endFill();
            child.buttonMode = true;
            addEventListener(MouseEvent.CLICK, clickHandler);

            var label:TextField = new TextField();
            label.text = "quit";
            label.selectable = false;
            label.mouseEnabled = false;
            child.addChild(label);

            addChild(child);
        }
    }
}