fscommand()
, которая облегчает процесс обмена данными между SWF-файлом и его контейнером.Функция | Определено | ||
---|---|---|---|
Обеспечивает взаимодействие SWF-файла с проигрывателем Flash Player или программой, содержащей Flash Player, например веб-обозревателем. | flash.system |
fscommand | () | функция |
public function fscommand(command:String, args:String = ""):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Обеспечивает взаимодействие SWF-файла с проигрывателем Flash Player или программой, содержащей Flash Player, например веб-обозревателем. Чтобы передать сообщения в Director или в Visual Basic, Visual C++ и другие программы, способные вмещать управляющие элементы ActiveX, можно также использовать функцию fscommand()
.
Функция fscommand()
обеспечивает взаимодействие SWF-файла со сценарием на веб-странице. Но доступ к сценариям контролируется параметрами allowScriptAccess
для веб-страниц. (Этот атрибут устанавливается в коде HTML, встроенном в SWF-файл. Например, в тег PARAM
для Internet Explorer или тег EMBED
для Netscape.)
allowScriptAccess
имеет значение sameDomain
(по умолчанию), работа со сценариями разрешена только для SWF-файлов, находящихся в том же домене, что и веб-страница. allowScriptAccess
имеет значение "always"
, SWF-может обращаться к HTML-странице, в которую он встроен, даже если он находится на другом домене. allowScriptAccess
имеет значение "never"
, SWF-файл не может обращаться ни к каким HTML-страницам. Обратите внимание, что использование этого значения не рекомендуется. Оно не требуется, если на вашем собственном домене не обслуживаются недоверенные SWF-файлы. В случае необходимости обслуживать недоверенный SWF-файлы Adobe рекомендует создать отдельный субдомен, на который следует помещать все недоверенное содержимое. Можно запретить использование SWF-файлом этого метода путем установки параметра allowNetworking
для тегов object
и embed
на странице HTML, содержащей SWF-содержимое.
Функция fscommand()
не разрешена, если вызывающий SWF-файл находится вне локальной файловой системы или изолированной сетевой среды, а содержащая его страница HTML находится не в доверенной изолированной среде.
Дополнительные сведения по обеспечению безопасности см. в следующих источниках.
Применение 1: чтобы использовать функцию fscommand()
для отправки сообщения проигрывателю Flash Player, необходимо использовать предварительно определенные команды и параметры. В следующей таблице показаны значения, которые можно указать для передаваемых с функцией fscommand()
параметровcommand
и args
. Эти значения управляют SWF-файлам, воспроизводимыми в проигрывателе Flash Player, включая проекторы. (Проектором называют SWF-файл, сохраненный в формате, который позволяет выполнять его в автономном приложении, то есть, не используя проигрыватель Flash Player.)
Команда | Параметр (args) | Цель |
---|---|---|
quit | Не задано | Закрывает проектор. |
fullscreen | true или false | Установка значения true переводит проигрыватель Flash Player в полноэкранный режим работы. Установка значения false возвращает проигрыватель в обычный режим работы с отображением меню. |
allowscale | true или false | Установка значения false задает режим проигрывателя, в котором SWF-файл всегда воспроизводится в окне исходного размера и никогда не масштабируется. Установка значения true заставляет SWF-файл масштабироваться в проигрывателе до 100%. |
showmenu | true или false | Установка значения true включает полный набор команд в контекстное меню. Установка значения false скрывает все команды контекстного меню за исключением пунктов "О Flash Player" и "Параметры". |
exec | Путь к приложению | Выполняет приложение из проектора. |
trapallkeys | true или false | Установка значения true отправляет все связанные с клавишами события, включая клавиши быстрого вызова, обработчику onClipEvent(keyDown/keyUp) в проигрывателе Flash Player. |
Не все из перечисленных в таблице команд доступны во всех приложениях.
allowscale
и exec
доступны в проигрывателях тестовых роликов.Команда 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.)
Применение 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.
|
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); } } }