Требования к внешнему 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-странице.

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

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

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

  • в приложении AIR, когда SWF-файл встроен в HTML-страницу, отображаемую элементом управления HTMLLoader.

Во всех остальных ситуациях (например, при запуске в автономном проигрывателе) свойство 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 работать не будут.