Требования к внешнему API и преимущества

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Внешний API является частью ActionScript, которая обеспечивает механизм для связи между ActionScript и кодом, запущенным во «внешнем приложении», который выступает в роли контейнера для Flash Player (обычно это веб-обозреватель или автономное приложение проектора). В ActionScript 3.0 функциональные возможности внешнего API обеспечиваются классом ExternalInterface. В версиях, появившихся перед версией Flash Player 8, действие fscommand() использовалось для осуществления связи с приложением контейнера. Класс ExternalInterface является заменой функции fscommand().

Примечание. Если потребуется воспользоваться старой функцией fscommand() (например, для сохранения совместимости со старыми приложениями или взаимодействия со сторонним приложением контейнера SWF или автономным проигрывателем Flash Player), она остается доступна на уровне пакета в пакете flash.system.

Класс ExternalInterface является подсистемой, которая позволяет легко связываться из ActionScript и Flash Player с кодом JavaScript на странице HTML или с любым приложением для настольных систем, включающим экземпляр Flash Player.

Класс ExternalInterface доступен только при следующих условиях:

  • во всех поддерживаемых версиях Internet Explorer для Windows (5.0 и выше);

  • в приложении контейнера (например, в качестве приложения для настольных систем) с помощью экземпляра элемента управления ActiveX для Flash Player;

  • в любом обозревателе, который поддерживает интерфейс NPRuntime, включая на данный момент версии, начиная с Firefox 1.0, Mozilla 1.7.5, Netscape 8.0 и Safari 1.3.

Во всех остальных ситуациях (например, при запуске в автономном проигрывателе) свойство ExternalInterface.available возвращает значение false.

Из ActionScript можно вызвать функцию JavaScript на странице HTML. Внешний API предлагает следующие усовершенствованные функции по сравнению с fscommand():

  • Можно воспользоваться любой функцией JavaScript, а не только функциями, которые можно применять вместе с функцией fscommand().

  • Можно передать любое количество аргументов с любыми именами, не ограничиваясь передачей команды и однострочного аргумента. Это придает внешнему API гораздо больше гибкости, чем методу fscommand().

  • Передавать можно различные типы данных (например, Boolean, Number и String), а не только параметры String.

  • Можно получить значение вызова, и это значение немедленно вернется в ActionScript (как возвращаемое значение выполняемого вызова).

Важная информация. Если имя, присвоенное экземпляру Flash Player на странице HTML (атрибут id для тега object), включает дефис (-) или другие символы, определенные в качестве операторов в JavaScript (например, +, *, /, \, . и так далее), вызовы ExternalInterface из ActionScript при просмотре веб-страницы контейнера обозревателем Internet Explorer работать не будут. Кроме того, если теги HTML, определяющие экземпляр Flash Player (теги object и embed), вложены в тег HTML form, вызовы ExternalInterface из ActionScript работать не будут.